我正在 stm 开发 STM32l151rct6a,我偶然发现了这些宏定义
__CC_ARM, __ICCARM__, __GNUC__, __TASKING__
有人知道他们的意思吗?
这些是针对 ARM 处理器的不同编译器,可能这些宏用于隐藏可由多个编译器编译的代码中依赖于编译器的内容。
__ICCARM__
--> IAR(还会有一个宏__IAR_SYSTEMS_ICC__
设置为编译器平台版本__IMAGECRAFT__
--> Imagecraft C(另请参阅下面 Clifford 的评论 - 还有一个宏 __ICC_VERSION__
,请参阅 pdf 文档)TASKING
--> 任务__CC_ARM
--> ARM (RealView) 编译器(链接已损坏)__GNUC__
--> gcc它们是用于识别用于构建代码的编译器的宏。
可以在 http://sourceforge.net/p/predef/wiki/Home/ 找到此类宏以及其他用于识别架构和操作系统等的列表。然而,它并没有全面涵盖来自小型嵌入式系统供应商的许多编译器(例如Tasking和Imagecraft)。
这些是编译器特定的宏,并在编译器代码中定义。例如,__ICC 用于 IAR,__GNU 用于 GNU 编译器。STM 平台的 BSP 部分给出了一些依赖于编译器的代码。