【发布时间】:2014-04-03 08:33:44
【问题描述】:
当我调试下面的一小段代码时,Visual Studio 调试器不显示我推入 deque 的 struct 的值,它只显示 所有字段名称 = ???强>。所有其他 var 都被正确观看了!
有人已经有同样的问题了吗?
typedef struct ToTestDrift{
int num;
uint64_t pts;
ToTestDrift(int n, uint64_t ts): num(n), pts(ts) {}
ToTestDrift(const ToTestDrift& ro):num(ro.num), pts(ro.pts) {}
} drift_t;
ifstream input("test.txt");
std::deque<drift_t> drift;
while(!input.eof())
{
int framenum; uint64_t pts;
input >> pts >> framenum;
push_back(drift)(framenum, pts);
}
注意:我使用升压范围适配器来 push_back,但与 drift.push_back 相同!
如果我在下面的代码中提取一个值,在这种情况下,watchon t 是可以的...
BOOST_FOREACH(frame_info_t t, tocheck)
{
if(t.pts != 0)
{
fprintf(stdout, "%d \t %0.2f \t %0.e2f \t %d \t %d \n", t.framenum, t.pts, t.drift, t.period, t.type);
}
}//*/
【问题讨论】:
-
个人建议:始终初始化所有变量。
-
可能不相关,但您知道
while (!input.eof())可能不会像您预期的那样工作吗?原因是eofbit标志直到 在 您尝试从文件之外读取时才设置。相反,请记住输入运算符>>返回流,并且流可以用作条件,因此您可以执行例如while (input >> pts >> framenum). -
什么版本的 Visual Studio?它在 2012 年和 2013 年对我来说效果很好。您正在调试调试版本而不是发布版本,对吗?
-
@RetiredNinja 嗨,我还在老年 :) 使用 Visual Studio 2008!是的,我处于调试模式...我和我的团队使用相同的模板项目,每个 vs 项目具有相同的调试设置。
-
我刚刚添加了一些细节和快照
标签: c++ visual-studio visual-studio-debugging