首页
社区
课程
招聘
解决问题啦~~
发表于: 2009-1-19 14:18 4305

解决问题啦~~

2009-1-19 14:18
4305
写了一段程序……
可是编译器竟然偷懒了……晕死

那段程序是这样的
	for(vol='C';vol<='Z';vol++)
	{
		VolumeName[0] = (CHAR) vol;
		QueryDosDevice(VolumeName, sBuf,MAX_PATH);
		if (sBuf[22]==pBuf[22])
		{
			pBuf[21] = vol;
			pBuf[22] = ':';
			break;
		}
	}
//	MessageBox(&pBuf[21]);
	return &pBuf[21];

如果取消MessageBox的注释,C就会把
pBuf[21] = vol;
			pBuf[22] = ':';

这两句编译,如果直接返回&pBuf[21];VC的编译器就视这两句代码为不见…… 晕死我啊……

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 233
活跃值: (43)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
你用的release模式看的吧,如果是debug模式,就没这个问题。
你注释掉了messagebox代码,编译器认为你用不到该参数了, 自然会忽略。
在vc6.0下,使用命令行cl编译的程序应该没有这个问题。可能是图形界面编译器参数的问题。
2009-1-19 15:44
0
雪    币: 93
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
狂晕,这叫优化好吧。
2009-1-19 16:10
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
把优化选项去掉应该就好了
2009-1-19 18:42
0
雪    币: 609
活跃值: (237)
能力值: ( LV12,RANK:441 )
在线值:
发帖
回帖
粉丝
5
嗯……谢谢大家帮忙拉~~问题解决了……
2009-1-19 19:50
0
游客
登录 | 注册 方可回帖
返回
//