3

IE。因此,如果您使用任何八进制文字,它会给您一个警告。

微软的编译器也有同样的问题。

如果没有,还有其他工具可以检测八进制文字。

(vim 似乎有一个很酷的技巧,它将第一个前导零突出显示为不同的颜色,但我更多地考虑使用自动化工具)。

4

2 回答 2

2

我不相信 gcc 有这样的警告。我刚跑info gcc(对于 gcc 4.5.2)并搜索“八进制”。只有两次出现,它们都没有用。

我不知道微软的编译器。

您可以在源文件中搜索匹配八进制常量的正则表达式。如果你有grep,这样的事情应该可以解决问题(警告:我没有测试过这个):

grep '\<0[0-7][0-7]*' foo.c

这匹配 0 后跟 0..7 范围内的一个或多个数字,位于单词的开头。它故意不匹配0,这是一个八进制常数,但可能不是你担心的。它可能会给您一些误报,例如在字符串文字和注释中。它还将匹配一个字符常量,例如'\007',它是八进制的,但不像八进制整数常量那样容易出错。

于 2011-08-12T07:11:24.497 回答
1

(问题标记为 gcc,但文本也询问 Microsoft 的编译器。)

我不认为 MSVC++ 对一般八进制文字有警告,但它会警告字符串文字中可疑的八进制转义序列。例如,如果您将警告级别调高"foo \669",将触发“ C4125 十进制数字终止八进制转义序列”。

于 2012-04-24T20:36:54.907 回答