C库标识符和保留规则

时间:2014-12-01 16:09:03

标签: c

在C11标准的7.1.3中列出了一些关于哪些是保留标识符的规则。

最后说:

  

不保留其他身份证明。如果程序声明或定义了   在保留的上下文中标识(除了允许之外)   通过7.1.4),或者将保留的标识符定义为宏名称,   行为未定。

但是,如果我尝试使用GCC来破坏其中一条规则,例如我写了类似int __A;的内容,编译器就什么也没告诉我。现在也许我不太了解,但是那些规则中的哪一个定义了你可以有一个未定义的行为的事实?

2 个答案:

答案 0 :(得分:5)

未定义行为的可能结果是没有警告,没有错误,一切正常。

另一个结果是你通过一个点发布升级你的编译器,以前工作的代码开始破坏。

答案 1 :(得分:0)

编译器可能会警告您未定义的行为,但它不必。在许多情况下,它没有。对于GCC,您至少应该使用选项-Wall -Wextra,但在这种情况下它不会有用。

静态分析工具(如夹板,PC-Lint,QA-C等)将为您提供更多关于未定义行为的警告。