TR1을 어떻게 포함합니까?
-
22-07-2019 - |
문제
다른 컴파일러마다 TR1에 대해 다른 아이디어가있는 것 같습니다. G ++는 유형의 포함을 받아들이는 것 같습니다.
#include <tr1/unordered_map>
#include <tr1/memory>
...
Microsofts 컴파일러 만 허용합니다.
#include <unordered_map>
#include <memory>
...
내가 TR1을 이해할 때 Microsoft Way는 올바른 방법입니다.
G ++가 두 번째 버전을 수락하는 방법이 있습니까? 일반적으로 휴대용 방식으로 TR1을 어떻게 처리합니까?
해결책
컴퓨터에 부스트를 설치하십시오.
검색 경로에 다음 디렉토리를 추가하십시오.
u003CBoost Install Directory>/boost/tr1/tr1
여기를 봐 TR1 부스트 자세한 내용은
이제 포함 할 때u003Cmemory> std :: tr1 :: shared_ptr 인 TR1 버전의 메모리를 얻은 다음 플랫폼 특정 버전을 포함합니다.u003Cmemory> 모든 정상적인 음식을 얻기 위해.
다른 팁
#ifdef _WIN32
#include <unordered_map>
#include <memory>
#else
#include <tr1/unordered_map>
#include <trl/memory>
#endif
아마도 가장 좋은 방법은 단순히 사용하는 것입니다 후원 현재 라이브러리는 대부분의 경우 TR1 기능과 유사한 인터페이스를 갖는 대안이 있으며 다른 (그러나 일관된) 헤더 경로 및 네임 스페이스에 있습니다. 이것은조차하지 않은 컴파일러에서 작업하는 이점이 있습니다. 시작 C ++ 0x 구현. 그리고 TR1에는 전혀 유용한 부스트 라이브러리가 많이 있습니다 :)
또는 g ++에서는 명령 줄에서 -std = gnu ++ 0x를 통과시킬 수 있습니다. 이것은 효과가 있습니다u003Cunordered_set> 그리고u003Cunordered_map> , 적어도. 그런 다음 std :: tr1에서 사용할 수 있도록합니다.
namespace std { namespace tr1 { using namespace std; } }
이것은 자연스럽게 악합니다. 대신 부스트 접근법을 강력히 추천합니다 :)
어쩌면 약간의 해킹이지만 컴파일러 TR1 디렉토리를 포함 경로에 추가 할 수 있습니다.
Windows 아래에있는 경우 시스템 경로에 'TR1'디렉토리를 추가하십시오. 그 다음에 #include <memory>
작동해야합니다.
나는 나 자신에게 같은 질문을했다. 불행히도 기술 보고서는 헤더가 어떻게 포함되어야하는지 말하지 않습니다. 확장자가 :: std :: tr1 네임 스페이스에 있어야한다고 정의합니다.