问题描述
是否有任何 C 编译器能够检测*违反“严格遵守程序”的情况?
* 在某些选项下,例如 --accept-only-strictly-conforming-program
如果不是,那么使用哪些工具来检测违反“严格遵守程序”的情况?
信息性(C11,4。一致性,p5):
严格遵守的程序应仅使用本国际标准中规定的语言和库的那些特性。3) 它不应产生依赖于任何未指定、未定义或实现定义的行为的输出,并且不应超过任何最小实现限制。
解决方法
- 缓冲区溢出是未定义的行为。
- 因此,此编译器必须检测每个可能的程序中的每个可能的缓冲区溢出。
- 听起来太难或不可能
- 听起来这样的编译器不存在:'(