今天我試了一下我之前開發的一個項目。當它遇到一個編譯錯誤時我感到驚訝,因爲我已經使用g ++成功編譯了我的項目。g ++中使用__attribute__的不平衡括號
這一小段再現那裏遇到錯誤的行:
int main() {
__attribute__((aligned(16)) char arr[5];
}
將會產生這個錯誤:
test.cpp:2:32: error: expected ')'
__attribute__((aligned(16)) char arr[5];
^
)
正如你可以看到,有一個umbalanced括號。有三個'('和兩個')'。這顯然看起來應該會產生編譯錯誤。
這是該關鍵字的有效用法嗎?我似乎無法找到the documentation上顯示的任何內容。
我使用g ++ 4.5.2和clang 2.8。
請注意,使用gcc而不是g ++檢測到此錯誤。
[gcc文檔](http://gcc.gnu.org/onlinedocs/gcc/Variable-Attributes.html)指出*「關鍵字'__attribute__'允許您指定變量或結構字段的特殊屬性。* *這個關鍵字後面跟着一個在雙括號「***」內部的屬性說明,所以它沒有用明確的關於相同括號數的關鍵詞來說明,但所有的gcc示例都顯示了匹配的括號,因此看起來像一個錯誤。 –
是的,它看起來實際上是一個錯誤。我找不到任何可能表明相反的東西。 – mfontanini
@DavidRodríguez-dribeas clang支持它。我的意思是,它真的看起來像g ++不正確解析expresion。鏗鏘做正確的事情(至少我懷疑是這樣的...這就是爲什麼我問:D)在這裏報告錯誤時。 – mfontanini