在 Centos7 上使用 boost 1.71.0 编译错误

Compile error with boost 1.71.0 on Centos7

本文关键字:编译 错误 boost Centos7      更新时间:2023-10-16

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

boost/bind/storage.hpp:44:40: error: macro "accept" requires 3 arguments, but only 1 given
template<class V> void accept(V & v) const
^

编译器开关包括:

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

后跟包含路径。

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

您已经定义了一个名为accept的宏,它采用 3 个参数。这将导致任何名称accept变量名称、函数名称、方法名称、类名等的使用出现问题。

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

#define MY_LIB_NAME_ACCEPT(a, b, c)

与第三方代码冲突的可能性要小得多#define accept.