跨平台的三個主要問題:
[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後面按下面指定并打鈎
