首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有用clang禁用三元图的开关?

有没有用clang禁用三元图的开关?
EN

Stack Overflow用户
提问于 2012-02-22 07:53:03
回答 2查看 4.9K关注 0票数 11

我有一些(遗留的)代码,是我第一次用clang构建的。代码类似于:

代码语言:javascript
复制
sprintf(buf, "%s <%s ????>", p1, p2);

Clang给出以下警告(-Werror错误):

代码语言:javascript
复制
test.c:6:33: error: trigraph converted to '}' character [-Werror,-Wtrigraphs]
    sprintf(buf, "%s <%s ????>", p1, p2);
                           ^

显然,??>并不是一个三联体,所以我想完全禁用三联体(源代码不会故意在任何地方使用它们)。

我尝试过-no-trigraphs,但这并不是一个真正的选择:

代码语言:javascript
复制
clang: warning: argument unused during compilation: '-no-trigraphs'

我可以用-Wno-trigraphs关闭三联体警告,但我根本不希望三联体转换发生。

注意:启用三元组是使用-std=c89的意外副作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-22 08:06:19

尝试使用gnu*模式- "Trigraphs默认情况下在gnu*模式下是关闭的;可以通过-trigraphs选项启用它们。“(有关其他区别和命令行开关,请参阅http://clang.llvm.org/docs/UsersManual.html#c_modes )

票数 7
EN

Stack Overflow用户

发布于 2012-02-22 07:59:37

我看不到一个明显的方法来禁用三联图(而不是三联图警告)。修复此代码的最简单方法可能是将其更改为:

代码语言:javascript
复制
sprintf(buf, "%s <%s ????"">", p1, p2);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9387166

复制
相关文章

相似问题

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