我怎样才能跳过这些警告? C++
how can i skip those warnings? C++
添加的代码:
bool CHARACTER::SpamAllowBuf(const char *Message)
{
if (!strcmp(Message, "(?˛´c)") || !strcmp(Message, "(μ·)") || !strcmp(Message, "(±a≫Y)") || !strcmp(Message, "(AA??)") || !strcmp(Message, "(≫c¶?)") || !strcmp(Message, "(?đłe)") || !strcmp(Message, "(??C?)") || !strcmp(Message, "(????)") || !strcmp(Message, "(AE??)"))
{
return true;
}
return false;
}
警告给出:
char.cpp:7254:121: warning: trigraph ??) ignored, use -trigraphs to enable
char.cpp:7254:245: warning: trigraph ??) ignored, use -trigraphs to enable
char.cpp:7254:275: warning: trigraph ??) ignored, use -trigraphs to enable
我怎样才能跳过这个警告?
要回答您的问题,请使用 -Wno-trigraphs
(如果使用 gcc/clang)。
但是根据您使用的 C++ 版本,三字母仍然是标准的一部分。因此,像这样 "?" "?" "?"
这样的问号序列将避免遇到三字母问题。编译器会看到一串 "???"
.
三字母序列是以 "??"
开头的任何字符序列;下一个字符决定序列的含义。三字母序列用于(或曾经)用于表示某些键盘上未提供的字符。因此,例如,"??="
表示 #
。
三字母序列不再被广泛使用;我没有检查过,但它们很可能已在 C++ 中弃用或完全删除。 (感谢@johnathan 指出它们在 C++17 中被删除)
无论如何,如果您不能关闭该警告,您可以更改字符序列,使其看起来与编译器相同,但不是三字母。为此,将 ?
字符之一更改为 \?
。所以 "??="
会变成 "?\?="
;这不是三字母组合,因为它不包含字符 "??"
后跟另一个字符,但是一旦编译器处理了它,它就是两个问号后跟一个 '='
符号。
另一种重新排列引用字符串的方法是将它们分开。所以 "??="
会变成 "??" "="
或 "?" "?="
;编译器连接那些相邻的字符串文字,但同样,它们不是三字母序列,因为连接发生在检查三字母之后。
添加的代码:
bool CHARACTER::SpamAllowBuf(const char *Message)
{
if (!strcmp(Message, "(?˛´c)") || !strcmp(Message, "(μ·)") || !strcmp(Message, "(±a≫Y)") || !strcmp(Message, "(AA??)") || !strcmp(Message, "(≫c¶?)") || !strcmp(Message, "(?đłe)") || !strcmp(Message, "(??C?)") || !strcmp(Message, "(????)") || !strcmp(Message, "(AE??)"))
{
return true;
}
return false;
}
警告给出:
char.cpp:7254:121: warning: trigraph ??) ignored, use -trigraphs to enable
char.cpp:7254:245: warning: trigraph ??) ignored, use -trigraphs to enable
char.cpp:7254:275: warning: trigraph ??) ignored, use -trigraphs to enable
我怎样才能跳过这个警告?
要回答您的问题,请使用 -Wno-trigraphs
(如果使用 gcc/clang)。
但是根据您使用的 C++ 版本,三字母仍然是标准的一部分。因此,像这样 "?" "?" "?"
这样的问号序列将避免遇到三字母问题。编译器会看到一串 "???"
.
三字母序列是以 "??"
开头的任何字符序列;下一个字符决定序列的含义。三字母序列用于(或曾经)用于表示某些键盘上未提供的字符。因此,例如,"??="
表示 #
。
三字母序列不再被广泛使用;我没有检查过,但它们很可能已在 C++ 中弃用或完全删除。 (感谢@johnathan 指出它们在 C++17 中被删除)
无论如何,如果您不能关闭该警告,您可以更改字符序列,使其看起来与编译器相同,但不是三字母。为此,将 ?
字符之一更改为 \?
。所以 "??="
会变成 "?\?="
;这不是三字母组合,因为它不包含字符 "??"
后跟另一个字符,但是一旦编译器处理了它,它就是两个问号后跟一个 '='
符号。
另一种重新排列引用字符串的方法是将它们分开。所以 "??="
会变成 "??" "="
或 "?" "?="
;编译器连接那些相邻的字符串文字,但同样,它们不是三字母序列,因为连接发生在检查三字母之后。