__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)))