我正在尝试编译一个按钮点击时的简单函数
std::string file_name((LPCTSTR)m_file_name);
file_name = "D:\\test_image.bmp";
int width = 0;
_width_glo = 0;
_height_glo = 0;
Mat image_inp;
image_inp = imread(file_name, CV_LOAD_IMAGE_COLOR);
width = image_inp.cols;
TRACE("trace width : %d\r\n", width);
_width_glo = image_inp.cols;
_height_glo = image_inp.rows;
BYTE *inp_value_buf = change_to_BYTE(image_inp);
if(m_data_type_selected == BMP_value)
{
Reverse_top_bottom(inp_value_buf);
}
但是 visual studio 跳过了这条线
int width = 0;
width = image_inp.cols;
并且在运行时不将宽度视为变量,还在 _width_glo
和 _height_glo
中发送垃圾值
知道为什么代码会这样吗?谢谢。
最佳答案
如果您使用发布/优化标志进行编译,很可能 TRACE 没有实现,因此 width
变量被编译器简单地删除,因为它根本没有被使用。
_width_glo
和 _height_glo
中的垃圾值很可能是 Mat 对象 image_inp
的未初始化属性。请注意,未初始化变量的行为是未定义的,并且在 Debug 和 Release 之间通常是不同的(取决于编译器,有些可能会在某些情况下自动用零初始化变量,但在其他情况下则不会)。
关于c++ - Visual Studio 跳过代码 mfc C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27526974/