常用的 預定義宏

http://blog.csdn.net/code09/article/details/5358165

 

一、介紹預定義宏 "_MSC_VER"
      1、_MSC_VER是微軟C/C++編譯器——cl.exe編 譯代碼時預定義的一個宏。需要針對cl編寫代碼時, 可以使用該宏進行條件編譯。
      2、_MSC_VER的值表示cl的版本。需要針對cl特定版本編寫代碼時, 也可以使用該宏進行條件編譯。
      3、_MSC_VER的類型是"int",具體版本號定義如下:

  MS VC++ 9.0 _MSC_VER = 1500
  MS VC++ 8.0 _MSC_VER = 1400
  MS VC++ 7.1 _MSC_VER = 1310
  MS VC++ 7.0 _MSC_VER = 1300
  MS VC++ 6.0 _MSC_VER = 1200
  MS VC++ 5.0 _MSC_VER = 1100
  其中MS VC++ 9.0就是Visual C++ 2008,MS VC++ 8.0就是Visual C++ 2005。

二、介紹預定義宏“__GNUC__”
1、__GNUC__ 是gcc編譯器編譯代碼時預定義的一個宏。需要針對gcc編寫代碼時, 可以使用該宏進行條件編譯。
     2、__GNUC__ 的值表示gcc的版本。需要針對gcc特定版本編寫代碼時,也可以使用該宏進行條件編譯。
     3、__GNUC__ 的類型是“int”

三、預定義宏"__MINGW32__"

     1、MinGW編譯器

四、symbian sdk預定義宏:

     symbian平臺,定義"__SYMBIAN32_"

     3rd MR版及之前的那個3rd版本,定義"__SERIES60_30__"
     3rd FP1版,定義"__SERIES60_31__" 
     3rd FP2版,定義"__SERIES60_32__"
      另外,還有一個"__SERIES60_3x__"。若不需區分具體是哪一個3rd版,則用之。

#if defined(_MSC_VER)
    #if _MSC_VER<=1200 //before vc6 (VC6不支持不定參數宏)
    #define os_printf(s)    printf##s
    #else //after vc6
    #define os_printf(fmt,...)    printf(fmt,__VA_ARGS__)
    #endif //_MSC_VER<=1200
#endif //_MSC_VER

#if defined(__GUNC__) //以下兩種定義都可以
#define os_printf(fmt,arg...) printf(fmt,##arg)
#define os_printf(fmt,...) printf(fmt,##__VA_ARGS__)
#endif //__GUNC__

#if defined(__MINGW32__)
#endif //__MINGW32__

#define os_print_a0    os_printf   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章