vs中调试时候跳过代码???

lestergyl 2014-08-07 02:28:43
int IpToInt(vector<int>& ip)
{
int res = 0;
int temp =0;
for(int i =0; i<ip.size();i++)
{
temp = ip[i];
if(i == 0)
{
temp<<24;
}
else if(i == 1)
{
temp<<16;
}
else if(i == 2)
{
temp<<8;
}
res += temp;
}
return res;
}
写了上面的函数调试时候发现 for循环中的if语句根本不执行,不能打断点。
显示:当前不会命中断点。没有与此行关联的可执行代码。可能的原因包括:预处理器指令或编译器/连接器优化
我用的debug模式,而且用vs2012 vs2010两个版本编译器都试了,都不行,请指教到底怎么回事???
...全文
1998 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lestergyl 2014-08-07
  • 打赏
  • 举报
回复
引用 8 楼 blackstar8888 的回复:
1.int i 在上面申明; 2.temp << 16;改成temp <<= 16;

int IpToInt(vector<int>& ip)
{
	int res = 0;
	int temp =0;
	int i =0;
	for(; i<ip.size();i++)
	{
		temp = ip[i];

		if(i == 0)
		{
			temp <<= 24;
		}
		else if(i == 1)
		{
			temp <<= 16;
		}	
		else if(i == 2)
		{
			temp <<= 8;
		}

		res += temp;
	}
	return res;
}
真惭愧,temp <<= 24; 和temp<<24都没看出来,结果被编译器优化掉了!!真想抽自己两下,谢谢了
blackstar8888 2014-08-07
  • 打赏
  • 举报
回复
1.int i 在上面申明; 2.temp << 16;改成temp <<= 16;

int IpToInt(vector<int>& ip)
{
	int res = 0;
	int temp =0;
	int i =0;
	for(; i<ip.size();i++)
	{
		temp = ip[i];

		if(i == 0)
		{
			temp <<= 24;
		}
		else if(i == 1)
		{
			temp <<= 16;
		}	
		else if(i == 2)
		{
			temp <<= 8;
		}

		res += temp;
	}
	return res;
}
边走边瞧 2014-08-07
  • 打赏
  • 举报
回复
把优化关闭看看。
风叶落 2014-08-07
  • 打赏
  • 举报
回复
菜单->调试->选项和设置->取消要求源文件和原始文件完全匹配这一项
lestergyl 2014-08-07
  • 打赏
  • 举报
回复
引用 4 楼 jianwen0529 的回复:
rebuilt 断点再往前打,调试看看能不能执行到if。
就是执行到if之前一句, 然后把if那一段全部跳过了
幻夢之葉 2014-08-07
  • 打赏
  • 举报
回复
rebuilt 断点再往前打,调试看看能不能执行到if。
lestergyl 2014-08-07
  • 打赏
  • 举报
回复
引用 1 楼 lovesmiles 的回复:
清空项目,重新生成项目试一下。
我都建了两个工程试了 你说还有必要重新生成项目吗?
勤奋的小游侠 2014-08-07
  • 打赏
  • 举报
回复
清空项目,重新生成项目试一下。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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