天天看點

GNU C中的__attribute__關鍵字

__attribute__機制是GNU C中一個非常有用的特性,它可以用來修飾函數、變量和結構體的編譯器屬性。

__attribute__((noinline))  /* 設定函數為非内聯函數 */

 __attribute__((always_inline)) /* 設定函數内聯 */

__attribute__((weak)) /* 用來聲明weak function */

__attribute__((aligned(4))) /* 設定位元組對齊 */

__attribute__((packed)) /* 取消編譯器對結構體的位元組對齊優化功能 */

__attribute__((constructor)) /* 該選項修飾的函數會在main函數之前被自動執行 */

__attribute__(destructor) /* 該選項修飾的函數會在main函數之後或者exit()被調用後自動執行 */

__attribute__((optimize("O0"))) /* 設定編譯器優化級别 */

/* 下面兩個選項用來告訴編譯器對帶有可變參數的函數進行檢查,檢查格式化字元串和參數之間是否比對。
    其中m表示格式化字元串在函數參數清單中的位置,n表示第一個格式化輸入參數在函數參數清單中的位置
    eg. int ispurs_snprintf(char *str, size_t size, const char *format, ...)  __attribute__ ((format (printf, 3, 4)));
    其中m表示format的位置,是以是3,n表示以一個待比對的參數位置,是以是4
*/
__attribute__((format(printf, m , n)))
__attribute__((format(scanf, m, n)))


           

繼續閱讀