即。这样,如果您使用任何八进制文字,就会发出警告。
Microsoft的编译器也有同样的问题。
如果没有,那么还有其他工具可以检测八进制文字。
(vim似乎有一个很酷的技巧,它突出了第一个领先
将另一种颜色归零,但我想更多的是自动化工具。
最佳答案
我不相信gcc有这样的警告。我只是运行info gcc
(对于gcc 4.5.2)并搜索了“八进制”。只有两次出现,但都没有用。
我不了解Microsoft的编译器。
您可以在源文件中搜索与八进制常量匹配的正则表达式。如果您有grep
,则可以使用以下方法解决此问题(警告:我尚未对此进行测试):
grep '\<0[0-7][0-7]*' foo.c
这会在一个单词的开头匹配一个0,后跟0..7范围内的一个或多个数字。它故意与
0
不匹配,它是一个八进制常量,但可能不是您担心的一个常量。它可能会给您带来一些误报,例如字符串文字和注释。它还将匹配字符常量(如'\007'
),该字符常量为八进制,但不像八进制整数常量那样容易出错。