c++ - Visual Studio 跳过代码 mfc C++

标签 c++ visual-studio-2010 opencv

我正在尝试编译一个按钮点击时的简单函数

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/

相关文章:

c++ - 将 CMake 项目导入 CodeLIte

asp.net - .Net - Visual Studio 2010 无法识别 ASP 页面上的某些 HTML 和 CSS 元素

javascript - Visual Studio 2010 脚本调试器对我不起作用

ios - iOS视角下的人脸检测和人脸识别有什么区别

c++ - 在 Linux 上从 C++ 调用可执行文件,并等待它完成

c++ - 检查和删除未按预期工作

c++ - 在构造函数上指定模板参数

c - 在opencv中显示图像

opencv - OpenCV-在多边形内部创建一个二进制掩码(给定其顶点)

c++ - 我可以为任何可以进入 Extern C 的 C++ vector 制作一个 C 包装器吗