增加的代码:
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怎样才能跳过这些警告呢?
发布于 2018-11-18 16:49:14
三角图序列是以"??"开头的任何字符序列;下一个字符决定该序列的含义。Trigraph用来表示一些键盘上没有提供的字符。例如,"??="的意思是#。
特里图序列不再被广泛使用;我没有检查它们,但它们很可能在C++中被废弃或完全删除。(感谢@johnathan指出它们是在C++17中删除的)
无论如何,如果您不能关闭该警告,您可以更改字符序列,使其在编译器看来是一样的,但不是一个三角图。为此,请将其中一个?字符更改为\?。因此,"??="将变成"?\?=";这不是一个三角图,因为它不包括字符"??"和另一个字符,但是一旦编译器处理了它,它就是两个问号,后面跟着一个'='符号。
另一种重新排列引用字符串的方法是将它们分开。因此,"??="将成为"??" "="或"?" "?=";编译器将那些相邻的字符串文本连接起来,但是,同样,它们不是三元组序列,因为连接是在检查三元图之后发生的。
发布于 2018-11-18 16:48:42
要回答你的问题,请使用-Wno-trigraphs (如果使用gcc/clang)。
但是,根据您使用的C++版本的不同,三角图仍然是标准的一部分。因此,像这样表示问题标记的序列,"?" "?" "?"将避免碰到三角图问题。编译器将看到一个"???"字符串。
https://stackoverflow.com/questions/53363180
复制相似问题