c – g编译器:优化标志添加警告消息

前端之家收集整理的这篇文章主要介绍了c – g编译器:优化标志添加警告消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我注意到g编译器的这个有趣的行为,如果我向编译器添加-O3标志,我得到
otsu.cpp:220: warning: ‘x’ may be used uninitialized in this function

但是,当我不使用优化而是使用调试标志-g时,我根本没有任何警告.现在,当-g标志打开时,我更信任编译器;但是,我想知道这是否是应该预期的明确定义的行为?

为清楚起见,导致这种情况的代码是这样的:

int x; //uninitialized


getAValueForX( &x ); // function makes use of x,// but x is unitialized

哪里

void getAValueForX( int *x )
 {
     *x = 4;
 }

或者沿着这些方向的东西,显然更复杂.

解决方法

这是预期的.优化会导致特定的代码分析运行,这就是gcc如何找到未初始化的变量.它在手册页中:

. . . these warnings depend on optimization

http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

猜你在找的C&C++相关文章