mfo*_*ini 6 c c++ gcc compiler-errors
今天我尝试了一下我前段时间开发的项目.当遇到编译错误时我感到很惊讶,因为我使用g ++成功编译了我的项目.
这个简短的片段再现了遇到错误的行:
int main() {
__attribute__((aligned(16)) char arr[5];
}
Run Code Online (Sandbox Code Playgroud)
哪会产生这个错误:
test.cpp:2:32: error: expected ')'
__attribute__((aligned(16)) char arr[5];
^
)
Run Code Online (Sandbox Code Playgroud)
如您所见,有一个不平衡的括号.有三个'(',和'')'.这显然看起来应该实际产生编译错误.
这是此关键字的有效用法吗?我似乎无法在文档中找到任何表明它的内容.
我正在使用g ++ 4.5.2和clang 2.8.
请注意,使用gcc而不是g ++时会检测到此错误.
这将是一个编译器错误。编译器会看到__attribute__后面是两个左括号,一些其他标记,然后是两个右括号,这可能是 an__attribute__应该是什么样子的“定义”,例如
<属性> ::=
__attribute__'(('某物'))'
我的猜测是,两者之间的标记被解释为aligned(16并且奇迹般地它仍然有效。