임베디드 프로젝트를 처음으로 테스트 드라이브에 추가합니다. IAR 7.60.2를 C++, Standard, Exceptions, RTTI 및 Stroy Object 파괴로 설정하고 있습니다.IAR의 C++ 컴파일러에서 부스트 사용하기
부스트 1.62.0을 사용하여이 Boost Getting Started Example을 복사하여 붙여 넣었습니다.
이 질문의 존재로 짐작할 수 있듯이 빌드에 실패합니다 (첫 번째 오류는 Error[Pe439]: expected a ">" ...\boost_1_62_0\boost\type_traits\remove_reference.hpp 30
입니다).
그 행에는 C++ 03에서 지원되지 않는 rvalue 참조가 포함됩니다. Boost의 현대 C++ 구조의 사용으로 인한 오류의 수는 T&&
과 constexpr
입니다.
IAR은 Boost가 테스트 한 컴파일러가 아니지만 Boost가 boost/predef에 IAR 관련 헤더의 존재와 결합 된 pre-C++ 11 컴파일러와 함께 작동 할 수 있다는 사실 그것을 구축 할 수있는 방법이있을 것이라고 믿게합니다.
내가 SO 검색 한, 인터 웹 및 부스트의 소스의 일부,하지만 난 IAR와 부스트를 사용하는 방법에 대한 모든 관련 정보를 찾을 수없는, 그래서 물어 온 : 아무것도 내가
1 있는가 Boost가 내가 사용하고있는 IAR 컴파일러와 그 한계를 인식하도록 도와 주어야합니까?
2. 강제 부스트를 C++ 03 컴파일러 용으로 빌드 할 수있는 메커니즘이 있습니까?
미리 감사드립니다.
부스트는 라이브러리 모음입니다. 모든 라이브러리가 동일한 컴파일러를 지원하는 것은 아닙니다. 즉, 컴파일러 탐지를 포함한 공통 인프라가 있습니다. 그래서 C++ 03에는'#define '이 없다는 것이 확실합니다. – MSalters
그렇다면 일반적인 인프라가 C++ 03로 제한된다는 사실을 포함하여 제 컴파일러를 인식 할 수있는 방법이 있습니까? – U007D
글쎄, 당신은 이미'boost/predef'를 발견했습니다. 귀하의 컴파일러가 그렇게 인식되고있는 것 같습니다. 그러나 Boost 1.62는 C++ 14 이후 2 년 후에 출시되었으며, 여전히 C++ 11 이전 컴파일러로 어려움을 겪고 있습니다. 오래된 Boost 버전으로 더 나을 수도 있습니다. – MSalters