我应该使用哪些编译标志以避免运行时错误

CIsForCookies

刚刚得知这里-Wsequence-pointcomiplation标志将弹出时,代码可以调用UB警告。我试过这样的声明

int x = 1;
int y = x+ ++x;

而且效果很好。到目前为止,我已经使用gccg++仅使用进行了编译-ansi -pedantic -Wall您还有其他有用的标志来使代码更加安全和健壮吗?

萨马拉斯

总结一下,使用以下标志:

-pedantic -Wall -Wextra -Wconversion


首先,我认为您不想使用该-ansi标志,如我应该使用“ -ansi”或显式“ -std = ...”作为编译器标志中所建议的那样?

其次,-Wextra似乎也很有用,正如-Wextra中所建议的,它实际上有多有用?

第三,-Wconversion似乎也很有用,正如我可以让GCC警告将过宽类型传递给函数吗?

第四,-pedantic也是有帮助的,如在GCC / G ++编译器中使用-pedantic的目的是什么?

最后,-Wall在这种情况下,启用应该可以,所以我对您的发言表示怀疑。

示例

Georgioss-MacBook-Pro:~ gsamaras$ cat main.c 
int main(void)
{
    int x = 1;
    int y = x+ ++x;
    return 0;
}
Georgioss-MacBook-Pro:~ gsamaras$ gcc -Wall main.c 
main.c:4:16: warning: unsequenced modification and access to 'x' [-Wunsequenced]
    int y = x+ ++x;
            ~  ^
main.c:4:9: warning: unused variable 'y' [-Wunused-variable]
    int y = x+ ++x;
        ^
2 warnings generated.
Georgioss-MacBook-Pro:~ gsamaras$ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.38)
Target: x86_64-apple-darwin16.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

示例,相同版本:

Georgioss-MacBook-Pro:~ gsamaras$ cp main.c main.cpp
Georgioss-MacBook-Pro:~ gsamaras$ g++ -Wall main.cpp 
main.cpp:4:16: warning: unsequenced modification and access to 'x'
      [-Wunsequenced]
    int y = x+ ++x;
            ~  ^
main.cpp:4:9: warning: unused variable 'y' [-Wunused-variable]
    int y = x+ ++x;
        ^
2 warnings generated.

我的相关回答是,沃尔因类似的问题再次节省了一天的时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

设置更高的共享内存以避免Google Colab上的PyTorch运行时错误

运行时错误与编译时错误

如何简化我的 python turtle 游戏以避免它在运行时间增加时占用更大的内存?

编译并运行时发生错误[NoClassDefFoundError]

应该首选OpenACC编译指示还是运行时例程?

我应该如何修复带有运行时错误的 Sock Merchant 代码

我的排序算法运行时错误

我需要设置哪个 iOS 目标以避免将 Swift 运行时库与我的 iOS 应用程序捆绑在一起?

如何管理App Engine Go运行时上下文以避免App Engine锁定?

如何在运行时解析类型以避免乘法

使用sudo运行时的未知选项标志

在运行时使用标志变量进行宏扩展

除以0是编译器错误或运行时错误

我应该使用 init 系统运行官方的 php-fpm 映像以避免 PID 1 问题吗?

Netlogo 如何避免 NOBODY 运行时错误?

为什么我应该使用CUDA驱动程序API而不是CUDA运行时API?

当使用Bazel运行时,我应该将Tensorflow的.pb图形保存在哪里?

我使用 javafx 的井字棋程序不起作用。它没有编译错误或运行时错误。但它仍然不起作用

检查哪些运行时静态库或dll使用

使用g ++编译Objective-C项目时出现运行时错误

在nuxt布局中使用动态组件获取运行时编译错误

使用 MinGW gcc/g++ (nuwen distro) 编译的程序中的运行时错误

使用.PasteSpecial的运行时错误'438'

使用OnTouchListenner的Android运行时错误

编译 index.cshtml 抛出运行时错误

编译Java运行时库时出现Protobuf错误

使用运行时DLL(/ MD)避免DLL与运行时相关

运行时与编译时间

Cabal配置,用于编译器标志和运行时选项