나는이 같은 std
네임 스페이스를 새롭게 정의 된 STLport라는 라이브러리를 사용하고 있습니다 :이 때문에이름이 수정 된 후에 원래 네임 스페이스로 되돌리려면 어떻게해야합니까?
# if defined (_STLP_REDEFINE_STD)
/* We redefine "std" to "stlport", so that user code may use std:: transparently */
# undef std
# define std STLPORT
# else
, 내가 std::something
를 사용하려고 사상 내 코드를, 그것은 _STLP::something
로 대체됩니다.
라인을 주석 처리하면 기존 프로젝트의 코드가 컴파일되지 않습니다.
줄을 주석 처리하지 않으면 stlport에서 사용하는 할당 자의 집합과 std::
을 사용하기 때문에 추가하려고하는 새 라이브러리가 컴파일되지 않습니다. 유형 충돌.
새 라이브러리를 포함하기 직전에 #define STLPORT std
을 온라인에서 시도했지만이 #define이 작동하지 않는 것 같습니다.
std
정상적으로 사용할 수있는 방법이 있나요?
# if defined (_STLP_REDEFINE_STD)
# undef std
# define std STLPORT
# else
//....
#ifdef std
#define std_WAS_DEFINED
#undef std
#endif
//new code
#ifdef std_WAS_DEFINED
#define std STLPORT
#endif
//legacy code
표준 컨테이너를 교환 할 필요는 없지만'-I'를 사용하려면 솔루션의 별도 프로젝트의 일부로 새 코드를 유지해야합니다.이전 코드와 동일한 프로젝트에서 새 코드를 사용할 수 없습니까? 저는 한 달 동안이 문제에 봉착했습니다. 고맙습니다! 다음에 시도 할 것은 stlport를 std로 바꾸는'/ D '였습니다. – Nav
Visual Studio에 익숙하지 않습니다. 아마도 가장 쉬운 해결책은 다른 프로젝트에서 이전 코드와 새 코드를 유지하는 것입니다. 확실하지 않습니다. –