2016-08-16 3 views
0

내가 부스트/이동/unique_ptr.hpp에서 컴파일 오류가 아래에 직면하고있어 부스트/이동/unique_ptr.hpp에 실패 : 나는 boost bugs에 열거 된 버그를 확인하려했지만하지 않았다부스트 컴파일

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 

많이 찾는다. 사용

부스트 버전 : 1.60.0

이이 생성 이후 부스트 버전에서 수정 된 버그이었다 (확인했지만 아무것도 발견하지 않은) 있으면 알려 주시기 바랍니다. 미리 감사드립니다. 당신이 표시되지 않은 프로그램의 버그 (의,

#define D(A) do(A) 

이 부스트의 버그가 아닌, 그래서 우리는 정말 도움이되지 수

답변

2

오류 메시지가이 같은 뭔가를 제안한다 너).

이 다음은 -DD(A)=do(A)

+0

안녕하세요 조나단 Wakely, 답장을 보내 감사와 같은 명령 줄 인수 될 수있는 #define에 의한 아니에요합니다. 코드는 유산이며 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를 써야합니까? Pls가 제안하는 깨끗한 해결책은 아닙니다. – user3753310