컴파일 시간에 현재 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에 신경 쓰지 않는다.
전처리 시간에 정의 된 변수가 있다고 확신합니다. 다시 찾을 수 없습니다.
해결책 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
제휴하지 않습니다 StackOverflow