这是在使用clang -std=gnu++11 -c test.cpp时编译的
void test() {
[[random text here]]
if (0) {
}
}但是这会给出错误main.cpp:3:1: error: expected statement
void test() {
[[random text here]]
}如果我使用clang -std=gnu++11 -S -emit-llvm main.cpp编译并查看LLVM代码,那么[[...]]行看起来没有任何效果:
define void @_Z5testv() nounwind uwtable ssp {
ret void
}你知道为什么吗?bug或某些C++11语法或GNU扩展语法?
我正在使用Xcode 4.4.1中的clang (Apple clang 4.0版(tag/Apple/clang-421.0.60))(基于LLVM 3.1svn)。
发布于 2012-08-31 18:12:56
这是使用C++11的属性语法。因此,假设"random text here“是一个属性。根据C++11规范,一个属性可以修改许多语句和声明。
属性可以是语句,但它们必须实际是语句。这意味着它们就像许多其他C++语句一样,以;结尾。
实现支持的属性集是由实现定义的(而Clang不支持任何属性。实际上,它显然根本不应该支持属性语法( according to the website)。不是由特定实现实现的属性应该被忽略,这就是它没有效果的原因。
https://stackoverflow.com/questions/12212678
复制相似问题