GCC版本判斷方法
References : http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
如果要用C, C++, Objective-C和Fortran來判斷GCC的版本的話,可以使用以下的Marco
P.S. __GNUC_PATCHLEVEL__是GCC 3.0才有
還有要判斷編譯器是不是GCC,有很簡單的版法就是直接判斷__GCC__就可以了
例如 #ifdef __GNUC__
Example 1:
int main(int argc, const char *argv[]){
printf("__GNUC__ : %d\n" , __GNUC__);
printf("__GNUC_MINOR__ : %d\n" , __GNUC_MINOR__);
printf("__GNUC_PATCHLEVEL__: %d\n" , __GNUC_PATCHLEVEL__);
return 0;
}
輸出結果 :
__GNUC__ : 4
__GNUC_MINOR__ : 7
__GNUC_PATCHLEVEL__: 2
這是我的gcc的版本 4.7.2
如果要用C, C++, Objective-C和Fortran來判斷GCC的版本的話,可以使用以下的Marco
- __GNUC__
- __GNUC_MINOR__
- __GNUC_PATCHLEVEL__
Example 2:
判斷GCC的版本
/* Test for GCC > 3.2.0 */
#if __GNUC__ > 3 || \
(__GNUC__ == 3 && (__GNUC_MINOR__ > 2 || \
(__GNUC_MINOR__ == 2 && \
__GNUC_PATCHLEVEL__ > 0))
或是
#define GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
/* Test for GCC > 3.2.0 */
#if GCC_VERSION > 30200
Example 3:
如果你不需要去判斷Patch Level的話,可以使用__GNUC_PREREQ(maj,min)這個Marco
來做判斷。下面是__GNUC_PREREQ的code, 他只是將 __GUNC__左移了16位元在加上__GNUC_MINOR__然後再去跟你輸入的maj跟min做判斷。
# define __GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
P.S. 記的要加上 #include<features.h>
留言