まず、 "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";
}
第二に、私は「-Wliteral-サフィックスを」無視するgcc docを追ったが、それでも警告を受けました。どのように警告を抑止するのですか?そして、コンパイラはなぜ最初に警告を発するのですか?
警告の内容はわかりませんが、とにかく抑制したいのですか?それが何であるかわからない場合は、それを抑止することが適切な対応であるとどのように判断できますか? – hvd
この警告はgccバグのように見えます。そのため、私はそれを抑制したいのです。 – zhao
どうやら抑止できないのは既知のgccバグです(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61653)。なぜそれが気になるのか分かりません。コードは私にはうまく見えます(#defineは目が痛い)。リテラルと#defineの文字列の間にスペースを置くだけで解決できます。テキストは変更されません。 –