2011-09-21 34 views
3

什麼是ISO C標準中__attribute__的替代? 我想移植獨立於編譯器的軟件。什麼是ISO C標準中__attribute__的替換?

+0

人們用'__attribute__'做的大多數事情都是非常錯誤和不可移植的(打包/對齊/等等),或者只是優化,當然這些優化當然是不必要的,並且可以簡單地移除以使代碼可移植。在前一種情況下,您需要解決更大的不可移植性問題;只是刪除'__attribute__'是很容易的部分。 –

回答

4

沒有一個。

一個解決方案是抽象宏後面的屬性。例如:

#ifdef __GNUC__ 
#define UNUSED __attribute((unused))__ 
#else 
#define UNUSED 
#endif 

... 

void function(void) UNUSED; 
0

這個gcc擴展提供的各種設施沒有一般替代品。大多數其他不兼容gcc的編譯器使用#pragma來實現類似的目標。自C99以來,C有_Pragma運算符,它允許您在代碼中間散佈雜注(不僅在適當的行上),並且用宏編寫雜注的內容。但是,您仍然需要對單個功能進行特定「翻譯」,以便將其編譯爲目標編譯器的相應編譯語法。