C++ Centos7上boost 1.71.0的编译错误

C++ Centos7上boost 1.71.0的编译错误,c++,boost,centos7,C++,Boost,Centos7,在Centos7上,使用默认的gcc编译器(版本4.8.5),我从头开始构建boost 1.71.0 64位。在构建过程中没有出现任何问题;一切正常。 当我试图编译使用boost的源代码时(在我的例子中是boost/thread.hpp),我得到一个编译错误: boost/bind/storage.hpp:44:40:错误:宏“accept”需要3个参数,但只提供1个参数 模板无效接受(V&V)常量 ^ 编译器开关是: g++-c-Wall-Wno-error-fPIC-g-O0-D WITH

在Centos7上,使用默认的gcc编译器(版本4.8.5),我从头开始构建boost 1.71.0 64位。在构建过程中没有出现任何问题;一切正常。 当我试图编译使用boost的源代码时(在我的例子中是boost/thread.hpp),我得到一个编译错误:

boost/bind/storage.hpp:44:40:错误:宏“accept”需要3个参数,但只提供1个参数
模板无效接受(V&V)常量
^
编译器开关是:

g++-c-Wall-Wno-error-fPIC-g-O0-D WITH_XXTGNOME_TRACE-D DEBUG-D_PTHREADS=1-D_REENTRANT=1-m64-std=gnu++11

后跟include路径


使用VS 2017编译相同的源代码时没有错误。有人知道出了什么问题吗

您定义了一个名为
accept
的宏,该宏包含3个参数。这将导致对变量名、函数名、方法名、类名等使用名称
accept

如果必须使用宏,请确保具有全局唯一的名称,一种约定是使用所有大写字母作为宏名称,还应在名称前加上唯一的前缀。例如:

#define MY_LIB_NAME_ACCEPT(a, b, c)

#define accept

相比,与第三方代码冲突的可能性要小得多,请提供一个。您(或您包含的其他库)可能定义了一个名为
accept
的宏,它正在破坏boost,例如,这就是解决方案!还有另一个定义了相同名称的makro,它不在Windows中使用(#ifndef_WIN32…)。谢谢