我正在编译C++代码,我想启用-pedantic选项。
我使用GCC 4.0,在Mac OS X Leopard上运行Xcode。
例如,可以允许使用-pedantic(使用-Wno-variadic-macros和-Wno-long-long)时通常禁止的可变宏和long long
类型。 但我找不到任何东西来禁用“逗号在枚举器列表末尾”的警告。
可能吗?GCC:使用-pedantic时是否可以禁用“枚举器列表末尾的逗号”警告?
谢谢。
我正在编译C++代码,我想启用-pedantic选项。
我使用GCC 4.0,在Mac OS X Leopard上运行Xcode。
例如,可以允许使用-pedantic(使用-Wno-variadic-macros和-Wno-long-long)时通常禁止的可变宏和long long
类型。 但我找不到任何东西来禁用“逗号在枚举器列表末尾”的警告。
可能吗?GCC:使用-pedantic时是否可以禁用“枚举器列表末尾的逗号”警告?
谢谢。
在枚举结束逗号是有效的C99但不是在C89,所以下面的工作提供你的代码是有效的C99
gcc -std=c99 -pedantic foo.c
我相当肯定,它不是有效的C++ (根据克++)在所有
编辑:在HP-UX与GCC 4.2.1测试这一点,它没有错误/警告工作 foo.c的
int main(int argc, char** argv) {
enum { A, B, };
return 0;
}
gcc -std=c99 -pedantic foo.c
在C++中它是尽管它在C++ 11中是合法的,但还不可能将其禁用。 因此,在未来,当GCC得到纠正时,-std = C++ 11应该禁用它。
-std = c99仅适用于C,而不适用于C++(如问题中所述)。
事实上,当使用“-std = c89”时我会收到警告。当使用“-std = 99”时不会发出警告。但是如果我把foo.c变成foo.cpp,我会得到一个错误。这是我的问题...... – Guillaume 2009-06-17 07:35:09
如果它是.c文件,那么GCC使用C编译器。如果它是.cc或.cpp文件,GCC使用C++编译器。你的代码不是合法的C++,因此是错误。 – Glen 2009-06-17 12:22:53