source

컴파일 시 GCC의 현재 버전을 어떻게 테스트합니까?

lovecheck 2023. 8. 30. 21:49
반응형

컴파일 시 GCC의 현재 버전을 어떻게 테스트합니까?

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는 신경쓰지 않습니다.

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

필요에 따라 정의해야 하는 매크로는 다음과 같습니다.

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

버전 형식은 major.minor.patch(예: 4.0.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

참고로 다음과 같습니다.

미리 정의된 매크로를 모두 찾으려면:

  • 빈 파일 t.cpp 만들기
  • g++ -E -dM t.cpp

언급URL : https://stackoverflow.com/questions/259248/how-to-test-the-current-version-of-gcc-at-compile-time

반응형