作者:未知        文章来源:互连网  
*****************************************************
ARM编译器中预定义的宏
*****************************************************
       ARM编译器预定义了一些宏,这些预定义宏对应一定的数值,有些预定义宏没有对应数值,见下表:
_arm _           使用编译器armcc,tcc,armcpp,tcpp时
_ARMCC_VERSION         Ver               代表编译器版本号,其格式为:
                                                                       PVtbbb,其中:
                                                                       P为产品编号(1代表ADS)
                                                                       V为副版本号(1代表1.1)
                                                                       T为补丁版本号(0代表1.1)
                                                                       bbb为build号(比如650)
_APCS_INTERWORK       _                             使用编译选项-apcs/interwork时
_APCS_ROPI      _                                使用编译选项apcs/ropi时
_RWPI             _                                使用编译选项-apcs/rwpi时
_APCS_SWST       _                             使用编译选项-apcs/swst时
_BIG_ENDIAN         _                             编译器针对目标系统使用big-endian内存模式时
_cplusplus       _                             编译器工作与C++模式时
_CC_ARM          _                             返回编译器的名称
_DATE_     date                       编译源文件的日期
_embedded_cplusplus                                 编译器工作于EC++模式时
_FEATURE_SINGED_CHAE                               使用编译设置选项-zc时设置该预定义宏
_FILE_      name                       包含全路径的当前被编译的源文件名称
_func_      name                       当前被编译的函数名称
_LINE_        num                         当前被编译的代码行号名称
_MOUDLE_      mod                         预定义宏_FILE_的文件名称部分
_OPTIMISE_SPACE         _                             使用编译选项-OSPACE时
_OPTIMISE_TIME           _                             使用编译选项-Otime时
_pretty_func        name                       unmangled的当前函数名称
_sizeof_int      4                             sizeof(int),在预处理表达式中可以使用
_sizeof_long      4                             sizeof(long),在预处理表达式中可以使用
_sizeof_ptr     4                             sizeof(void*)在预处理表达式中可以使用
_SOFTFP       _                             编译时使用浮点数
_                   _                             在各种编译器模式下
_STDC_VERSION     _                             标准的版本信息
_STRICT_ANSI_           _                               使用编译选项-STRICT时
_TARGET_ARCH_xx         _                             xx代表ARM体系编号
_TARGET_CPU_xx           _                             xx代表CPU编号
_TARGET_FEATURE_                                       当ARM体系支持指令PLD,LDRD,STRD,MCRR,MRRC时
DOUBLEWORD                   _                             设置该定义宏
_TARGET_FEATURE_                                       当系统中包含DSP乘法处理器时,设置该
DSPMUL     _                               预定义宏
_TARGET_FEATURE_                                       如果目标ARM体系支持半字访问以及有符号的字节数据
HALFWORD           _                               ,设置该预定义宏
_TARGET_FEATURE_                                       如果目标ARM体系支持长乘法指令MULL和
MULTIPLY         _                             MUAL,设置该预定义宏
_TARGET_FEATURE_                                       如果目标ARM体系支持THUMB指令
THUMB       _                             
_TARGET_FPU_xx           _                             表示FPU选项,可能取值如下所示:
                                                                       _TARGET_FPU_VFP
                                                                       _TARGET_FPU_FPA
                                                                       _TARGET_FPU_SOFTVFP
                                                                       _TARGET_FPU_SOFTVFP_VFP
                                                                       _TARGET_FPU_SOFTFPA
                                                                       _TARGET_FPU_NONE
_thumb        _                               编译器为tcc或tcpp时,设置该预定义宏
_TIME                                   源文件编译时间