不同編譯器中預定義的巨集(__CC_ARM、__ICCARM__、__GNUC__、__TASKING__)
1、先看下如下程式碼
#if defined ( __CC_ARM ) #define __ASM __asm /*!< asm keyword for ARM Compiler */ #define __INLINE __inline /*!< inline keyword for ARM Compiler */ #elif defined ( __ICCARM__ ) #define __ASM __asm /*!< asm keyword for IAR Compiler */ #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */ #elifdefined ( __GNUC__ ) #define __ASM __asm /*!< asm keyword for GNU Compiler */ #define __INLINE inline /*!< inline keyword for GNU Compiler */ #elif defined ( __TASKING__ ) #define __ASM __asm /*!< asm keyword for TASKING Compiler */ #define __INLINE inline /*!< inline keyword for TASKING Compiler */ #endif
2、這些巨集分別代表什麼平臺?
__CC_ARM對應的平臺是:ARM RealView
RealView,是一套包含編譯、除錯和模擬的開發工具,需結合開發環境如uvision、eclipse或者CodeWarrior,形成整合開發環境來使用。
__ICCARM__對應的平臺是:IAR EWARM
Embedded Workbench for ARM 是IARSystems 公司為ARM 微處理器開發的一個整合開發環境(下面簡稱IAR EWARM)。比較其他的ARM 開發環境,IAR EWARM 具有入門容易、使用方便和程式碼緊湊等特點
__GNUC__對應的平臺是:GNU Compiler Collection
GCC的初衷是為GNU作業系統專門編寫的一款編譯器。GNU系統是徹底的自由軟體
__TASKING__對應的平臺是:Altinum Designer
Altium Designer 是原Protel軟體開發商Altium公司推出的一體化的電子產品開發系統,主要執行在Windows作業系統。這套軟體通過把原理圖設計、電路模擬、PCB繪製編輯、拓撲邏輯自動佈線、訊號完整性分析和設計輸出等技術的完美融合,為設計者提供了全新的設計解決方案,使設計者可以輕鬆進行設計,熟練使用這一軟體使電路設計的質量和效率大大提高
3、這些巨集分別代表什麼含義?
以__GNUC__為例說明:
GNU C預定義了一系列的巨集,這些巨集都是以雙下劃線開始的。
__GNUC__代表的主版本號。官方的說明:These macros are defined by all GNU compilers that use the C preprocessor: C, C++, Objective-C and Fortran.