首先,我不知道为什么“g ++ -std = C++ 0x -Wall”会给我警告:文字上的无效后缀; C++ 11需要在下面的程序文字和字符串宏[-Wliteral后缀]之间的空间:如何禁用g ++中的特定警告
#include <iostream>
#define BEGIN "<b>"
#define END "</b>"
#pragma GCC diagnostic ignored "-Wliteral-suffix"
int main()
{
std::cout << "hello " BEGIN"world"END "\n";
}
其次,我也跟着gcc doc忽略“-Wliteral后缀”,但还是得到了警告。我如何压制警告?为什么编译器首先警告?
你不知道警告是什么,但你想压制它吗?如果你不知道它是什么,你怎么能确定抑制它是适当的响应? – hvd
此警告看起来像一个海湾合作委员会的错误,这就是为什么我想压制它。 – zhao
显然,未能取消是已知的gcc错误(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61653)。我不知道为什么它关心这个 - 代码对我来说看起来很好(尽管#defines是眼睛疼痛)。您可以通过简单地在文字和#define字符串之间插入空格来修复它 - 它不会更改文本。 –