【发布时间】:2010-11-19 12:54:13
【问题描述】:
我正在使用 BOOST_FOREACH 来遍历 C++ 字符串的字符,如下所示:
void foobar(const string& str)
{
BOOST_FOREACH(const char ch, str)
{
// Do something with ch
}
return;
}
这段代码适用于以下编译模式:
- 多线程(发布)(/MT)
- 多线程调试 (/MTd)
- 多线程 DLL(发布)(/MD)
仅在此模式下会导致运行时错误(异常):
- 多线程调试 DLL(发布)(/MDd)
上面的代码 sn-p 没有编译错误或警告,让我相信 BOOST_FOREACH 知道它在这里处理的容器。此外,将 const char ch 更改为 const char& ch 不会改变行为。
为什么这段代码会导致这种不良的运行时行为?
为什么只在 Debug DLL 模式下?
在 C++ 字符串上使用 BOOST_FOREACH 是否错误?
如果是,最好的解决方法是什么?
(请注意,我正在使用 Visual Studio 2008 和 Boost 1.39。)
【问题讨论】:
-
请提供更详细的信息,说明您在什么时候遇到了哪些异常/错误。
-
还有预处理器输出。
-
以及重现问题的完整最小测试用例。
-
确实,如果你能得到一个可测试的程序,我们中的许多人都可以在这些配置下进行测试。
-
我复制粘贴了你给我们的代码,它在所有情况下都运行良好,包括 /MDd ... ^_^ ...
标签: c++ visual-studio string boost