ale*_*cov 10 c standards-compliance strict toolchain
我目前正在开发一个C项目,需要在不同的建筑环境中相当便携.该项目面向托管C环境中符合POSIX的系统.
实现良好程度的可移植性的一种方法是根据所选标准进行编码,但很难确定给定的翻译单元是否严格符合ISO C.例如,它可能违反某些翻译限制,或者它可能依赖于未定义的行为,而没有来自编译环境的任何诊断消息.我甚至不确定是否有可能检查大型项目的严格一致性.
考虑到这一点,是否有任何编译器,工具或方法在翻译单元的给定标准(例如,C89或C99)下测试严格的 ISO C一致性?
任何帮助表示赞赏.
通常不可能找到未定义的运行时行为。例如,考虑
void foo(int *p, int *q)
{
*p = (*q)++;
...
Run Code Online (Sandbox Code Playgroud)
如果 是未定义的p == q。如果不解决停机问题,就无法提前确定是否会发生这种情况。
(编辑以修复 caf 指出的错误。谢谢,caf。)