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>

留言