天天看點

GNU

跨平台的三個主要問題:

[1] 位元組序:Linux低位元組在前。系統中,有ntohXXX(), htonXXX()等函數,負責将資料在網絡位元組序(高位元組在前)和本地位元組序之間轉換。

[2] 變量長度:       short    int    long    long long    ptr    time_t

      32位            2        4      4          8               4        4

      64位              2         4      8          8               8       8

[3] 記憶體對齊:GNU C的一大特色就是__attribute__機制。__attribute__可以設定函數屬性(Function Attribute)、變量屬性(Variable Attribute)和類型屬性(Type Attribute)。

GNU CC需要使用 –Wall編譯器來擊活該功能,這是控制警告資訊的一個很好的方式

__attribute__ ((attribute-list))

其位置限制為:放于聲明的尾部“;”之前。

變量後面加上“__attribute__ ((packed));“則結構體就會以位元組對其,域以位對其;__attribute__ ((aligned(4)));則以4位元組對其”

對于函數:

KEIL下的GNU:

除了上面的設定還需要生成BIN和AXF目标檔案(proteus或者Jscope都需要改檔案),方法是在after build/rebuild的#RUN1後面按下面指定并打鈎

GNU
GNU

繼續閱讀