반응형
컴파일 시 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
반응형
'source' 카테고리의 다른 글
IIS Express를 클래식 파이프라인 모드로 강제 설정 (0) | 2023.09.04 |
---|---|
전체 화면을 채우시겠습니까? (0) | 2023.08.30 |
배경 이미지 위의 반투명 컬러 레이어? (0) | 2023.08.30 |
명령줄 스크립트를 통해 연결된 모든 장치의 장치 UUID를 어떻게 찾을 수 있습니까? (0) | 2023.08.30 |
Mysql 오류 구분 기호: 줄 구분 기호에 오류가 있습니다. (0) | 2023.08.30 |