C++ Visual Studio 2010中的boost::线程编译错误
很长一段时间以来,我第一次尝试使用boost,当我包含boost/thread.hpp头文件时,boost内部出现编译错误:C++ Visual Studio 2010中的boost::线程编译错误,c++,multithreading,visual-studio-2010,boost,C++,Multithreading,Visual Studio 2010,Boost,很长一段时间以来,我第一次尝试使用boost,当我包含boost/thread.hpp头文件时,boost内部出现编译错误: c:\myproj\boost_1_46_0\boost\thread\win32\thread_heap_alloc.hpp(97): error C2061: syntax error : identifier 'heap_memory c:\myproj\boost_1_46_0\boost\thread\detail\thread.hpp(134)
c:\myproj\boost_1_46_0\boost\thread\win32\thread_heap_alloc.hpp(97): error C2061: syntax error : identifier 'heap_memory
c:\myproj\boost_1_46_0\boost\thread\detail\thread.hpp(134) : see reference to function template instantiation 'T *boost::detail::heap_new<boost::detail::thread_data<F>,void(__cdecl *)(void)>(A1 &&)' being compiled
with
[
T=boost::detail::thread_data<void (__cdecl *)(void)>,
F=void (__cdecl *)(void),
A1=void (__cdecl *)(void)
]`
c:\myproj\boost\u 1\u 46\u 0\boost\thread\win32\thread\u heap\u alloc.hpp(97):错误C2061:语法错误:标识符“heap\u内存”
c:\myproj\boost\u 1\u 46\u 0\boost\thread\detail\thread.hpp(134):请参阅正在编译的函数模板实例化“T*boost::detail::heap\u new(A1&)”的参考
具有
[
T=boost::detail::thread\u数据,
F=无效(cdecl*)(无效),
A1=无效(uuu cdecl*)(无效)
]`
只需包含标题,它似乎与我的代码没有任何关系,但我看不出该怎么办,有人能帮忙吗?有可能您包含了一些定义为“new”的其他包,这打破了Boost试图对new进行的操作。
要查看预处理后的代码,请使用/P或/E编译,然后在输出中搜索这一行,看看它是否不同。
是的,我知道问题所在。如果您正在使用MSVC向导,请确保包含boost标题,您可以从中找到感兴趣的内容
#include <boost/thread/thread.hpp>
我不知道boost内部的代码如何编译,它使用变量名(
heap\u memory
)作为类型转换:void*const heap\u memory=allocate\u raw\u heap\u memory。。。T*const data=new(heap\u memory)T…
我以为我已经通过定义BOOST\u NO\u RVALUE\u引用解决了这个问题,但这只是推迟了问题,直到我尝试调用一个带参数的构造函数。boost代码就是不合理!!VS2010确实有右值引用,所以这不是问题。new(heap\u memory)
不是类型转换,而是新的位置。该对象是在*heap_内存中构造的,刚刚分配。在这个头之前包含了什么?我想我在头之前没有包含任何特殊的内容,我应该做什么?如果是这样的话,为什么boost不包括这种依赖性本身呢?
#ifdef _DEBUG
#define new DEBUG_NEW
#endif