超级奇怪的问题:c++中成员函数不能给成员变量赋值?

lxj20000forever 2011-11-10 04:25:55
我今天调试程序,在.h文件中定义了两个新的成员变量
class H264VideoFileServerMediaSubsession: public FileServerMediaSubsession{
...
protect:
float fFileDuration;
int int fFiletest;
}
在成员函数中引用了
FramedSource* H264VideoFileServerMediaSubsession::createNewStreamSource(unsigned /*clientSessionId*/, unsigned& estBitrate) {
estBitrate = 500; // kbps, estimate

// Create the video source:
ByteStreamFileSource* fileSource = ByteStreamFileSource::createNew(envir(), fFileName);
if (fileSource == NULL) return NULL;
fFileSize = fileSource->fileSize();
fFileDuration = 3600.00;
fFiletest = 9;
// Create a framer for the Video Elementary Stream:
return H264VideoStreamFramer::createNew(envir(), fileSource);
}
。但调试时在红字处设置了断点,
但出现奇怪的问题。
红字的两句不能设置断点,而且调试运行时,fFileDuration 变量不能赋值,而fFiletest 不但不能赋值,更可气的是这个变量在把它放到监视窗口中竟然显示symbolic not found。
找了好长时间,也没找到问题,谁能帮我?我用的是vc6,调试的是纯c++的程序
谢谢了
...全文
395 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yzw124 2011-11-10
  • 打赏
  • 举报
回复
4楼正解
beckhanyan 2011-11-10
  • 打赏
  • 举报
回复
把断点设在return前面,声明变量的语句断点不停的
Enter空格 2011-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lxj20000forever 的回复:]

二楼兄弟,我就是在调试状态没有release
三楼兄弟,编译器不能把逻辑都优化掉啊
[/Quote]
你这绝对是release版本的程序调试起的。
你用debug版本的程序调试起。
你以为这两个地方赋值就算是逻辑了?
release版本和debug版本差别很大的,没用的语句编译出的汇编代码,会直接拿掉。
说真的,有时候看release和debug版的反汇编,真的为编译器捏一把汗。
确实担心它把有用的东西优化掉。
不过至今为止,只出现过一次意外情况。
yaohua1210 2011-11-10
  • 打赏
  • 举报
回复
是静态成员函数?
lxj20000forever 2011-11-10
  • 打赏
  • 举报
回复
二楼兄弟,我就是在调试状态没有release
三楼兄弟,编译器不能把逻辑都优化掉啊
柯本 2011-11-10
  • 打赏
  • 举报
回复
可能的问题,编译器优化了你的程序
dengqibin 2011-11-10
  • 打赏
  • 举报
回复
release编译了吧,你要用debug才能调试啊

64,648

社区成员

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

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