2016-08-16 37 views
0

我面对下面从boost /移动/ unique_ptr.hpp编译错误:升压编译失败升压/移动/ unique_ptr.hpp

In file included from ../../src/pamEmergencyBanner/pamEmergencyBanner.cpp:29:0: 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp: In constructor 'boost::move_upd::unique_ptr_data<P, D, false>::unique_ptr_data()': 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:133:9: error: expected identifier before 'do' 
     : D(), m_p() 
     ^
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:133:9: error: expected '{' before 'do' 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp: In constructor 'boost::move_upd::unique_ptr_data<P, D, false>::unique_ptr_data(P)': 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:137:9: error: expected identifier before 'do' 
     : D(), m_p(p) 
     ^
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:137:9: error: expected '{' before 'do' 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp: In constructor 'boost::move_upd::unique_ptr_data<P, D, false>::unique_ptr_data(P, boost::move_upd::unique_ptr_data<P, D, false>::deleter_arg_type1)': 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:141:9: error: expected identifier before 'do' 
     : D(d1), m_p(p) 
     ^
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:141:9: error: expected '{' before 'do' 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp: In constructor 'boost::move_upd::unique_ptr_data<P, D, false>::unique_ptr_data(P, const U&)': 
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:146:9: error: expected identifier before 'do' 
     : D(::boost::forward<U>(d)), m_p(p) 
     ^
/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/boost/move/unique_ptr.hpp:146:9: error: expected '{' before 'do' 
make[5]: *** [../../src/pamEmergencyBanner/pamEmergencyBanner.o] Error 1 
make[5]: Leaving directory `/home/sunkrish/sunkrish_20160812104350_RUIM_AAA_CLog/SS_AAA/Pam/build/pamEmergencyBanner' 
Errors building lib1 target 
make[4]: *** [lib] Error 2 

我试图检查boost bugs列出的任何错误,但没有找到很多。使用

加速版本:1.60.0

请让我知道,如果有这种创造和更高版本的提振纠正错误(试图检查,但没有发现任何)。提前致谢。

回答

2

该错误信息显示你有这样的事情:

#define D(A) do(A) 

这不是在提升的一个错误,它在你的程序(错误,这还没有显示,所以我们不能真正帮助你好)。

如果它不是由#define造成的,它可能是一个命令行参数一样-DD(A)=do(A)

+0

嗨乔纳森Wakely, 感谢您的答复。代码是遗留的,并且正在使用Boost版本1.55。 升级到1.60.0后,此编译失败。 – user3753310

+0

这并不重要,它仍然不是Boost中的错误。尝试在代码中添加'#define D 1',它会告诉你错误的宏定义在哪里。 –

+0

好的,谢谢,得到了宏D的声明。那是另一个库(PAM)。 '/fpbuild/fpsdkroot_cougar/sysroots/x86_64/sysroot-FP-FPNSN5500-x86_64/sysroot/usr/include/security/_pam_macros.h:190:0:注意:这是以前definition' 定义的位置: '#define \t D(x)do {} while(0)' 如何解决这个冲突,应该在我的代码中使用#undef D?这不会是一个干净的解决方案请建议。 – user3753310