在项目编译的时候,程序出现的奇葩的行为,在程序中有一个语句如下:
........
fprintf(fp,"%" PRId32 "%.2f\n", x , y);
........
编译没有问题,能顺利通过,但是运行时,确无法将变量x和y输出到指定文件。着实很生气,折腾了好久,debug、gdb反反复复,觉得程序逻辑各方面完全没有问题,怀疑人生。
最终,猜想会不会是编译器设置了优化编译,产生的问题,编译器优化产生bug的概率真的很小很小,但是自己真的排除了所有的可能,概率小也要试一下,于是:
........
fprintf(fp,“%.2f %" PRId32 "\n", x , y);
........
只是把输出的变量的位置调换了一下,编译通过,运行正常!!!
总结:
编译器优化设置是为了提高程序的编译速度,有可能这些优化会导致未知的错误,即使这个概率很小很小,但是还是让我弄了好久。所以为了安全起见,还是不设置编译优化参数的好。