__CC_ARM,__ ICC __,__ GNUC__和__TASKING__宏是什么意思?

我正在通过stm研究STM32l151rct6a,我偶然发现了这些MACRO定义

__CC_ARM, __ICCARM__, __GNUC__, __TASKING__ 

有谁知道他们的意思?

这些是ARM处理器的不同编译器,可能这些宏用于隐藏编译器相关的东西,这些代码可由多个编译器编译。

  • ICCARM – > IAR (还会有一个宏__IAR_SYSTEMS_ICC__ ,设置为编译器平台版本
  • __IMAGECRAFT__ – > Imagecraft C (另见下面的Clifford评论 – 还有一个宏__ICC_VERSION__ ,请参阅pdf文档 )
  • 任务 – > 任务
  • __CC_ARM – > ARM(RealView)编译器
  • __GNUC__ – > gcc

它们是用于标识用于构建代码的编译器的宏。

可以在http://sourceforge.net/p/predef/wiki/Home/找到这些宏的列表,以及用于识别体系结构和操作系统等的其他宏。 然而,它并未全面涵盖来自较小嵌入式系统供应商(例如Tasking和Imagecraft)的许多编译器。

这些是编译器特定的MACROS并在编译器代码中定义。例如__ICC用于IAR而__GNU用于GNU编译器。在BSP部分中为STM平台提供了一些依赖于编译器的代码。