2012-11-08 42 views
1

我讀了代碼中有這樣的事情:gcc __attribute__,它有什麼作用?

#define __printf__(a,b) __attribute__((format(printf,a,b,))) 

爲了下架__printf__,我需要了解什麼呢attibute做,

任何人可以幫助我瞭解這個>

謝謝你這麼多

回答

1

的格式(原型,串指數,率先向檢查)

format屬性指定函數使用printf,scanf,strftime或strfmon樣式參數,這些參數應該根據格式字符串進行類型檢查。例如,聲明:

  extern int 
     my_printf (void *my_object, const char *my_format, ...) 
       __attribute__ ((format (printf, 2, 3))); 

使編譯器檢查參數在調用my_printf與printf類型的格式字符串參數my_format一致。

它基本上是編譯器在編譯時根據給定格式類型驗證任何字符串的說明。在引用的行中,它告訴編譯器針對printf格式字符串驗證printf格式字符串(例如,如果爲參數%s傳遞int,則編譯器應告訴用戶)。

欲瞭解更多關於documentation的格式信息。