klu*_*utt -2 c gcc undefined-behavior
有没有一种方法可以强制gcc检测所有未定义的行为?我希望它检测在编译时和运行时都可以发现的东西。我知道UB不仅有助于简化编译器的创建,而且使编译器可以优化代码。后者在您进行调试时不相关,并且轻量级编译器的需求已不像1972年那样大。此外,gcc在这一点上是一个非常成熟的编译器,如果可能的话,它将进行大量调试工作更轻松。
我知道这-Wformat将对printf("%d", 42)未初始化的变量产生警告。当您尝试访问数组外部的内存时,该参数-Warray-bounds 可能会捕获,尽管我需要在构造实际上产生警告的代码中进行一些工作。我也知道可以使用检测到一些运行时错误-fstack-protector-all。
所以我的问题就是这样。有没有办法保证所有UB都能被检测到,如果可能的话,在编译时,但是最迟在运行时才被检测到?