话说哥这两月做项目,碰到的编译器问题真不少。
写这篇博文的之前,遇到另一个问题,设置断点,但无法进入该cpp内的断点,而其他cpp文件的断点,即可以进入。提示的错误如下:

很明显,说的是该调试的版本文件与当前设置断点的cpp不同。请教同事,给出的解释有:
1 .调试用的是运行用的lib和dll是以前编译的,在该cpp中随便打个空格或者空行,重新编译该cpp生成新的lib和dll(尝试后失败,我甚至删除中间obj等链接文件,还是一样的错误)
2.cpp文件属性是否用问题,咋一听,一个cpp也有属性,对比其他cpp的属性后,发现也没问题。
如何办呢?
我尝试的方法是:
1.从备份该cpp,然后从SVN服务器上下载修改前的cpp,结果可想而知,可以命中断点。因此我想解决办法就是,复制备份cpp的所有代码,覆盖该cpp。(未尝试,大家可以试试)
2.设置工程属性,参考如下两个博文,http://blog.csdn.net/zhao_yin/article/details/6959954 http://blog.csdn.net/desow/article/details/4843556
(最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在goole搜索此类类似问题,找到下篇文章,然后我把那个cpp文件用记事本打开,另存为unicode格式,再重新编译,最后问题解决!也可以更改vs2005的设置,选项->常规,将要求源文件与原始版本完全匹配的勾取消就可以了!)

到此,问题解决了,那么原因是什么呢?希望能解决该问题并深入追究的朋友给出解释。
浙公网安备 33010602011771号