首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎么能跳过那些警告呢?C++

我怎么能跳过那些警告呢?C++
EN

Stack Overflow用户
提问于 2018-11-18 16:40:40
回答 2查看 330关注 0票数 2

增加的代码:

代码语言:javascript
复制
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;
}

警告:

代码语言:javascript
复制
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

怎样才能跳过这些警告呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-18 16:49:14

三角图序列是以"??"开头的任何字符序列;下一个字符决定该序列的含义。Trigraph用来表示一些键盘上没有提供的字符。例如,"??="的意思是#

特里图序列不再被广泛使用;我没有检查它们,但它们很可能在C++中被废弃或完全删除。(感谢@johnathan指出它们是在C++17中删除的)

无论如何,如果您不能关闭该警告,您可以更改字符序列,使其在编译器看来是一样的,但不是一个三角图。为此,请将其中一个?字符更改为\?。因此,"??="将变成"?\?=";这不是一个三角图,因为它不包括字符"??"和另一个字符,但是一旦编译器处理了它,它就是两个问号,后面跟着一个'='符号。

另一种重新排列引用字符串的方法是将它们分开。因此,"??="将成为"??" "=""?" "?=";编译器将那些相邻的字符串文本连接起来,但是,同样,它们不是三元组序列,因为连接是在检查三元图之后发生的。

票数 7
EN

Stack Overflow用户

发布于 2018-11-18 16:48:42

要回答你的问题,请使用-Wno-trigraphs (如果使用gcc/clang)。

但是,根据您使用的C++版本的不同,三角图仍然是标准的一部分。因此,像这样表示问题标记的序列,"?" "?" "?"将避免碰到三角图问题。编译器将看到一个"???"字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53363180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档