Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 1 decade ago

__attribute__((packed))的問題

各位前輩

小弟目前在撰寫程式時遇到一個問題

原本的程式範本是

typedef struct ETHER_HEADER

{

uint8_t tMAC[6]; /* MAC address of the sink */

uint8_t sMAC[6]; /* MAC address of the source */

uint16_t protocol; /* protocol type */

} __attribute__((packed)) ETHER_PACKET;

gcc是支援這個語法的

可是小弟目前是在ANSI C底下寫這個程式

Code Warrior Compiler並不支援這個用法

如果想承接使用struct的話

有什麼好方法可用嗎?

謝謝各位大大的指教!

1 Answer

Rating
  • Anonymous
    1 decade ago
    Favorite Answer

    structure packing 在Compiler的編譯選項中一般都可以設定,

    將 __attribute__((packed)) 拿掉,然後依需求設定成 1/2/4/8 byte

    可以用 sizeof(ETHER_HEADER) 來確認設定後的效果,或由map/lst等報告觀察變數的配置情形

    因為沒用過Code Warrior Compiler,沒法提供建議

    可以參考手冊或用Google搜尋"structure packing"

    目前已經可以compiled了

    Source(s):
    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.