首先,我不知道爲什麼「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字符串之間插入空格來修復它 - 它不會更改文本。 –