debug 版和 release版执行为什么产生不同的结果????

rabithao 2003-11-23 01:43:40
CString gpstime = DIRECTORY1 + "\\GPSData\\gpsstake_time.txt";
if((withtimefile = fopen(gpstime, "rb"))==NULL)
{
AfxMessageBox("Error opening gpsstake_time.txt file");
exit(-1);
}
上面的几行代码,在debug 版本中打开文件没有产生MessageBox,而release版本中却产生了MessageBox。
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabithao 2003-11-25
  • 打赏
  • 举报
回复
是不是这个警告的问题。
warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
rabithao 2003-11-23
  • 打赏
  • 举报
回复
同样的还有这样的问题:
for(unsigned a=0; a<gplayer.framecount; a++)
{
if(m_ForeTime==(item1[a].frame_time.wHour*3600 +
item1[a].frame_time.wMinute*60 + item1[a].frame_time.wSecond))
{
****************;/// A
}
}
在debug中可以运行到A,而在release中却不可以.
frankMasson 2003-11-23
  • 打赏
  • 举报
回复
我调试了一会, 发现了一个问题, 如果在调用的时候没有正确的填写函数参数, 导致在进行消息映射的时候框架程序无法正确的把函数参数压栈, 将会造成溢出.

举个例子:
有如下的一个消息处理函数被你用来映射到 ON_WM_LBUTTONDOWN() :

yourClass::
afx_msg void OnLButtonDown(); // 注意, 这个函数没有正确被重载

你在上面的函数实现中引入了你的问题代码, 就会出错, 原因如上所述.

将其改为

yourClass::OnLButtonDown(UINT nHitTest, CPoint pt)

程序才可以正确运行.
joer986565 2003-11-23
  • 打赏
  • 举报
回复
up
frankMasson 2003-11-23
  • 打赏
  • 举报
回复
我的 2000 vc6 上调试也出现了这个问题, 暂时还无法回答, 估计是 C RunTime lib 和 MFC 的兼容性问题, 但我奇怪的是为什么要在 MFC 中使用 fopen 呢, 还有无数的方便而安全的 windows 文件 api 可用啊?
rabithao 2003-11-23
  • 打赏
  • 举报
回复
ps: My OS is Xp.

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧