我有一些(遗留)代码是我第一次使用 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
的意外副作用。
最佳答案
尝试使用 gnu* 模式 - “Trigraphs 默认在 gnu* 模式下关闭;它们可以通过 -trigraphs 选项启用。” (参见 http://clang.llvm.org/docs/UsersManual.html#c_modes 了解其他差异和命令行开关)
关于c++ - 是否有一个开关可以用 clang 禁用三字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9387166/