最近在使用VC生成Release版本时,发现我在CMyProApp类里定义的全局变量,在其所有使用到的地方都没有执行,:
我在CMyProApp类里定义了:int g_Language=0;
在其他类里使用该变量时,先  extern int g_Language;
然后:
在改类里这样引用
if(g_Language==0)
{
LVCOLUMN pcol;
pcol.pszText = "工程名称";
m_conProjectList.SetColumn(0,&pcol);
pcol.pszText = "描述";
m_conProjectList.SetColumn(1,&pcol);
pcol.pszText = "创建日期";
m_conProjectList.SetColumn(2,&pcol);
pcol.pszText = "位置";
m_conProjectList.SetColumn(3,&pcol);
}
主要是为了想做CListCtrl列表视图中列名的中文和英文切换在Debug版本中没有任何问题,可在Release版本中,这段代码并没有执行,显示的还是英文,
实在不知道怎么回事!
请各位大侠指点,在线等,不甚感激!!!!

解决方案 »

  1.   

    改用全局变量试试
    定义在stdafx.cpp中
      

  2.   

    经过调试发现,是下段代码并没有执行,我现在怀疑是pcol.pszText 这种类型的变量在Release版本中,被优化了,有高手能指点否?
    LVCOLUMN pcol;
    pcol.pszText = "工程名称";
    m_conProjectList.SetColumn(0,&pcol);
    pcol.pszText = "描述";
    m_conProjectList.SetColumn(1,&pcol);
    pcol.pszText = "创建日期";
    m_conProjectList.SetColumn(2,&pcol);
    pcol.pszText = "位置";
    m_conProjectList.SetColumn(3,&pcol);
      

  3.   

    是不是需要执行一下listctrl的Update()?
      

  4.   

    如果说优化的话只能是用于判断的全局变量被优化了,用volatile试一下。不过我是从来没在pc端程序用过,只有单片机程序才用得着。如果是这样就太诡异了,还是仔细调一下代码吧。