我有一些(遗留的)代码,是我第一次用clang构建的。代码类似于:
sprintf(buf, "%s <%s ????>", p1, p2);Clang给出以下警告(-Werror错误):
test.c:6:33: error: trigraph converted to '}' character [-Werror,-Wtrigraphs]
sprintf(buf, "%s <%s ????>", p1, p2);
^显然,??>并不是一个三联体,所以我想完全禁用三联体(源代码不会故意在任何地方使用它们)。
我尝试过-no-trigraphs,但这并不是一个真正的选择:
clang: warning: argument unused during compilation: '-no-trigraphs'我可以用-Wno-trigraphs关闭三联体警告,但我根本不希望三联体转换发生。
注意:启用三元组是使用-std=c89的意外副作用。
发布于 2012-02-22 08:06:19
尝试使用gnu*模式- "Trigraphs默认情况下在gnu*模式下是关闭的;可以通过-trigraphs选项启用它们。“(有关其他区别和命令行开关,请参阅http://clang.llvm.org/docs/UsersManual.html#c_modes )
发布于 2012-02-22 07:59:37
我看不到一个明显的方法来禁用三联图(而不是三联图警告)。修复此代码的最简单方法可能是将其更改为:
sprintf(buf, "%s <%s ????"">", p1, p2);https://stackoverflow.com/questions/9387166
复制相似问题