1. 程式人生 > >GNU

GNU

UNC fun 設定 variable time urn unix align 本地

http://blog.chinaunix.net/uid-25768133-id-3485479.html

跨平臺的三個主要問題:

[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字節對其”

對於函數:

__attribute__((noreturn))表示這個函數沒有返回值也不能有返回值

__attribute__((nonnull(1,3))) 第1和3參數不能為空

KEIL下的GNU:

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

技術分享圖片

技術分享圖片

GNU