【发布时间】:2011-01-19 01:43:25
【问题描述】:
当编译器注意到具有未定义/未指定/实现定义行为的语句时,它不能发出警告(如果它抛出错误更好)吗?
可能将语句标记为错误,标准应该这样说,但它至少可以警告编码器。实施这样的选择是否有任何技术困难?还是根本不可能?
我得到这个问题的原因是,在像 a[i] = ++i; 这样的语句中,在到达序列点之前,它不会知道代码正在尝试引用一个变量并在同一个语句中修改它。
【问题讨论】:
-
另外一个重要原因是,一个完美的 n00b 在没有导师的情况下通过教科书学习,不了解常见问题解答,可能正在编写一些代码,其中单个语句可能未定义;该编译单元中的所有剩余代码都未定义;他会继续不知情。例如。几年前我还是一岁。
标签: c++ c compiler-warnings undefined unspecified