编译器优化——安全性和效率的权衡

在项目编译的时候,程序出现的奇葩的行为,在程序中有一个语句如下:

........

fprintf(fp,"%" PRId32  "%.2f\n", x , y);

........

编译没有问题,能顺利通过,但是运行时,确无法将变量x和y输出到指定文件。着实很生气,折腾了好久,debug、gdb反反复复,觉得程序逻辑各方面完全没有问题,怀疑人生。

最终,猜想会不会是编译器设置了优化编译,产生的问题,编译器优化产生bug的概率真的很小很小,但是自己真的排除了所有的可能,概率小也要试一下,于是:

........

fprintf(fp,“%.2f   %" PRId32 "\n", x , y);

........

只是把输出的变量的位置调换了一下,编译通过,运行正常!!!

总结:

编译器优化设置是为了提高程序的编译速度,有可能这些优化会导致未知的错误,即使这个概率很小很小,但是还是让我弄了好久。所以为了安全起见,还是不设置编译优化参数的好。

你可能感兴趣的:(编译器优化——安全性和效率的权衡)