在gcc中是否有关于八进制文字的警告?

时间:2011-08-12 06:29:12

标签: gcc warnings octal

即。所以,如果你使用任何八进制文字,它会给你一个警告。

微软编译器的同样问题。

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

(vim似乎有一个很酷的技巧,突出了第一个领先 零颜色不同,但我更多的是考虑自动化工具。)

2 个答案:

答案 0 :(得分:2)

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

我不知道微软的编译器。

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

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

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

答案 1 :(得分:1)

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

我不认为MSVC ++对一般八进制文字有警告,但它会警告字符串文字中可疑的八进制转义序列。例如"foo \669",如果您的警告级别一直上升,则会触发“C4125 decimal digit terminates octal escape sequence”。