컴파일 시간에 현재 GCC 버전을 테스트하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/259248

  •  06-07-2019
  •  | 
  •  

문제

GCC 버전에 따라 다른 파일을 포함하고 싶습니다. 더 정확하게는 글을 쓰고 싶습니다.

#if GCC_VERSION >= 4.2
#  include <unordered_map>
#  define EXT std
#elif GCC_VERSION >= 4
#  include <tr1/unordered_map>
#  define EXT std
#else
#  include <ext/hash_map>
#  define unordered_map __gnu_cxx::hash_map
#  define EXT __gnu_cxx
#endif

나는 3.2 전에 GCC에 신경 쓰지 않는다.

전처리 시간에 정의 된 변수가 있다고 확신합니다. 다시 찾을 수 없습니다.

도움이 되었습니까?

해결책 2

좋아, 더 많은 검색을 한 후에는 가능한 한 가지 가능한 방법은 __GNUC_PREREQ 정의되었습니다 features.h.

#ifdef __GNUC__
#  include <features.h>
#  if __GNUC_PREREQ(4,0)
//      If  gcc_version >= 4.0
#  elif __GNUC_PREREQ(3,2)
//       If gcc_version >= 3.2
#  else
//       Else
#  endif
#else
//    If not gcc
#endif

다른 팁

귀하의 요구에 대해 정의해야 할 많은 매크로가 있습니다.

__GNUC__              // major
__GNUC_MINOR__        // minor
__GNUC_PATCHLEVEL__   // patch

버전 형식은 major.minor.patch, 예를 들어 4.0.2입니다

이에 대한 문서를 찾을 수 있습니다 여기.

참고 사항 : 참고 :

사전 정의 된 모든 매크로를 찾으려면 :

  • 빈 파일 T.CPP를 만듭니다
  • g++ -E -dM t.cpp
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top