0
예를 들어
,이 노력하고있어 :C++ 11과 TR1 사이에서 전환하기위한이 전처리 매크로가 작동하지 않는 이유는 무엇입니까?
#if __cplusplus >= 201103L
#include <unordered_set>
typedef std::unordered_set<std::string> UnorderedStringSet;
#else
#include <tr1/unordered_set>
typedef std::tr1::unordered_set<std::string> UnorderedStringSet;
#endif
그것은에 대한 확인 작업 C++ TR1에 CentOS 5.6, 그리고 C++ 11 인식 엑스 코드 (독불 장군)의 내 작품을 좋아하지만에 실패 할 것 C + 11 Mac OS (mavericks)의 명령 행.
편집 분명히 C++ 11 컴파일러에서는 실패합니다. 또는 은이 C++ 11 컴파일러 여야합니다. 어쩌면 그게 문제 야.
오류 :
MyFile.cpp fatal error: 'tr1/unordered_set' file not found
은 분명히 제대로> = 201103L __cplusplus의 #if을 평가하지 않습니다.
컴파일러 인수 :
g++ -I. -I/snipped - -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /Users/xxxxx/src/MyFile.cpp -fno-common -DPIC -o src/.libs/MyFile.o
컴파일러 버전 :
$ g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
것은 무엇 잘못 될 수 있을까? 그리고 아마도 더 좋은 방법이 있을까요?
"오류가 발생했습니다"라는 오류에 대해 자세히 설명해주십시오. – 101010
어떤 컴파일러를 사용하고 있습니까? 및 컴파일러 플래그 –
TR1은 모든 사전 -C++ 11 컴파일러에서 사용할 수 있다고 보장 할 수 없습니다. 더 많은 컴파일러 관련 작업을 수행하거나 제 3 자 구현 (예 : 부스트)을 수행해야 할 수도 있습니다. – Cogwheel