我正在通过 stm 研究 STM32l151rct6a,我偶然发现了这些 MACRO 定义
__CC_ARM, __ICCARM__, __GNUC__, __TASKING__
有谁知道他们的意思?
我正在通过 stm 研究 STM32l151rct6a,我偶然发现了这些 MACRO 定义
__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)的许多编译器。
这些是编译器特定的 MACROS,并在编译器代码中定义。例如,__ICC 用于 IAR,__GNU 用于 GNU 编译器。在 BSP 部分中给出了一些代码,用于 STM 平台,它们依赖于编译器。