首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

【!】BCB6,代码修改并编译后,得到的程序和没修改前是一样。

2013-09-09 
【求助!】BCB6,代码修改并编译后,得到的程序和没修改前是一样。。。我的CB6用了3、4年了,以前一直好好的,但是今

【求助!】BCB6,代码修改并编译后,得到的程序和没修改前是一样。。。
我的CB6用了3、4年了,以前一直好好的,但是今天碰到一个奇怪的问题。。。。。

有一个工程,我在其中修改了一个结构体TMeterInfo:添加了一个新成员error_code,删除了一个成员show_delay。

之后重新build并运行,可以正常编译和运行程序。

但是在debug的时候,发现查看内存中TMeterInfo结构体的时候,里面没有error_code,而且show_delay依然存在。。。

我已开始以为是头文件重复包含了,就把h文件中的TMeterInfo改名为TMeterInfo_BAK,c文件中的没有修改,结果编译的提示找不到类型TMeterInfo,于是就排除了头文件重复包含情况。

然后又在其他头文件里找了个结构体TShowInfo做实验,但是发现情况和TMeterInfo是一样的,新加的成员都不会出现在debug的中。。。

之后继续找问题,发现如果吧TMeterInfo的定义和引用都改成TMeterInfo_Tmp,那么再次编译后就是我想要的结构体,但是只要把名字改回原来的,就还是会出现前面说的情况。。。

但是奇怪的是,修改程序代码逻辑流程不会有任何问题,这种修改了但是编译后没生效的情况只出现在结构体上。。。

有没有碰到过类似情况的朋友哇?还有各位路过的高人?都帮个忙给看看吧。。。

谢啦各位! 编译错误 结构体定义失效
[解决办法]
最直接就把文件从工程中去除,可能残留的编译生成文件作怪
[解决办法]
把文件从工程里移除了,重加文件
还有看看各个目录里有没有重名的文件
[解决办法]
比较大的可能是你的生成的OBJ文件时间比你的源程序文件时间要新,导致该源文件不再被编译而采用以前的OBJ直接链接,你检查一下时间。
[解决办法]
太正常了,经常遇到,这时关闭工程,将工程目录中的__history和Win32目录删除即可
[解决办法]
前几天刚碰到过这样的情况,最后是把工程彻底重编译后,就好了~~~~
[解决办法]

引用:
Quote: 引用:

比较大的可能是你的生成的OBJ文件时间比你的源程序文件时间要新,导致该源文件不再被编译而采用以前的OBJ直接链接,你检查一下时间。


我都删掉了,整个工程都清理了,我连res文件都删掉了。。。


两种方法:
1. 假定你的源文件名称为a.cpp,你检查一下a.obj的时间是否比a.cpp要新
2. 你把工程发给我,我给你看看 QQ:282397369
[解决办法]
很有可能是头文件重名,严重检查一下。

热点排行