9.150 Predefined macros
9.150 Predefined macros
The ARM compiler predefines a number of macros. These macros provide information about toolchain version numbers and compiler options.
Table 9-21 Predefined macros
| Name | Value | When defined |
|---|---|---|
__arm__ |
- |
Always defined for the ARM compiler, even when you specify the
--thumb option.See also
__ARMCC_VERSION. |
__ARMCC_VERSION |
ver |
Always defined. It is a decimal number, and is guaranteed to increase between releases. The format is
PVVbbbb where:
NoteUse this macro to distinguish between ARM Compiler 4.1 or later, and other tools that define
__arm__. |
__APCS_INTERWORK |
- |
When you specify the
--apcs /interwork option or set the target processor architecture to ARMv5T or later. |
__APCS_ROPI |
- |
When you specify the
--apcs /ropi option. |
__APCS_RWPI |
- |
When you specify the
--apcs /rwpi option. |
__APCS_FPIC |
- |
When you specify the
--apcs /fpic option. |
__ARRAY_OPERATORS |
- | In C++ compiler mode, to specify that array new and delete are enabled. |
__BASE_FILE__ |
name |
Always defined. Similar to
__FILE__, but indicates the primary source file rather than the current one (that is, when the current file is an included file). |
__BIG_ENDIAN |
- | If compiling for a big-endian target. |
_BOOL |
- |
In C++ compiler mode, to specify that
bool is a keyword. |
__cplusplus |
- | In C++ compiler mode. |
__CC_ARM |
1 |
Always set to 1 for the ARM compiler, even when you specify the
--thumb option. |
__DATE__ |
date |
Always defined. |
__EDG__ |
- |
Always defined.
|
__EDG_IMPLICIT_USING_STD |
- |
In C++ mode when you specify the
--using_std option. |
__EDG_VERSION__ |
- |
Always set to an integer value that represents the version number of the Edison Design Group (EDG) front-end. For example, version 3.8 is represented as
308.NoteThe version number of the EDG front-end does not necessarily match the version number of the ARM compiler toolchain. |
__EXCEPTIONS |
1 |
In C++ mode when you specify the
--exceptions option. |
__FEATURE_SIGNED_CHAR |
- |
When you specify the
--signed_chars option (used by CHAR_MIN and CHAR_MAX). |
__FILE__ |
name |
Always defined as a string literal. |
__FP_FAST |
- |
When you specify the
--fpmode=fast option. |
__FP_FENV_EXCEPTIONS |
- |
When you specify the
--fpmode=ieee_full or --fpmode=ieee_fixed options. |
__FP_FENV_ROUNDING |
- |
When you specify the
--fpmode=ieee_full option. |
__FP_IEEE |
- |
When you specify the
--fpmode=ieee_full, --fpmode=ieee_fixed, or --fpmode=ieee_no_fenv options. |
__FP_INEXACT_EXCEPTION |
- |
When you specify the
--fpmode=ieee_full option. |
__IMPLICIT_INCLUDE |
- |
When you specify the
--implicit_include option. |
__LINE__ |
num |
Always set. It is the source line number of the line of code containing this macro. |
__MODULE__ |
mod |
Contains the filename part of the value of
__FILE__. |
__MULTIFILE |
- | When you explicitly or implicitly use the --multifile option.a |
__OPTIMISE_LEVEL |
num |
Always set to 2 by default, unless you change the optimization level using the
-O option.a |
__OPTIMISE_SPACE |
- |
When you specify the
-Ospace option. |
__OPTIMISE_TIME |
- |
When you specify the
-Otime option. |
__OPTIMIZE__ |
- |
When
-O1, -O2, or -O3 is specified in GNU mode. |
__OPTIMIZE_SIZE__ |
- |
When
-Ospace is specified in GNU mode. |
__PLACEMENT_DELETE |
- | In C++ mode to specify that placement delete (that is, an operator delete corresponding to a placement operator new, to be called if the constructor throws an exception) is enabled. This is only relevant when using exceptions. |
__RTTI |
- | In C++ mode when RTTI is enabled. |
__sizeof_int |
4 |
For
sizeof(int), but available in preprocessor expressions. |
__sizeof_long |
4 |
For
sizeof(long), but available in preprocessor expressions. |
__sizeof_ptr |
4 |
For
sizeof(void *), but available in preprocessor expressions. |
__SOFTFP__ |
- |
If compiling to use the software floating-point calling standard and library. Set when you specify the
--fpu=softvfp option for ARM or Thumb, or when you specify --fpu=softvfp+vfpv2 for Thumb. |
__STDC__ |
- | In all compiler modes. |
__STDC_VERSION__ |
- | Standard version information. |
__STRICT_ANSI__ |
- |
When you specify the
--strict option. |
__SUPPORT_SNAN__ |
- | Support for signalling NaNs when you specify --fpmode=ieee_fixed or --fpmode=ieee_full. |
__TARGET_ARCH_ARM |
num |
The number of the ARM base architecture of the target processor irrespective of whether the compiler is compiling for ARM or Thumb. For possible values of __TARGET_ARCH_ARM in relation to the ARM architecture versions, see the table below. |
__TARGET_ARCH_THUMB |
num |
The number of the Thumb base architecture of the target processor irrespective of whether the compiler is compiling for ARM or Thumb. The value is defined as zero if the target does not support Thumb. For possible values of
__TARGET_ARCH_THUMB in relation to the ARM architecture versions, see the table below. |
__TARGET_ARCH_ |
- |
represents the target architecture and its value depends on the target architecture. For example, if you specify the compiler options --cpu=4T or --cpu=ARM7TDMI then __TARGET_ARCH_4T is defined. |
__TARGET_CPU_ |
- |
represents the target processor. The value of is derived from the --cpu compiler option, or the default if none is specified. For example, if you specify the compiler option --cpu=ARM7TM then __TARGET_CPU_ARM7TM is defined and no other symbol starting with __TARGET_CPU_ is defined.If you specify the target architecture, then
__TARGET_CPU_generic is defined.If the processor name specified with
--cpu is in lowercase, it is converted to uppercase. For example, --cpu=Cortex-R4 results in __TARGET_CPU_CORTEX_R4 being defined (rather than __TARGET_CPU_Cortex_R4).If the processor name contains hyphen (-) characters, these are mapped to an underscore (
_). For example, --cpu=ARM1136JF-S is mapped to __TARGET_CPU_ARM1136JF_S. |
__TARGET_FEATURE_DOUBLEWORD |
- |
ARMv5T and above.
|
__TARGET_FEATURE_DSPMUL |
- | If the DSP-enhanced multiplier is available, for example ARMv5TE. |
__TARGET_FEATURE_MULTIPLY |
- |
If the target architecture supports the long multiply instructions
MULL and MULAL. |
__TARGET_FEATURE_DIVIDE |
- |
If the target architecture supports the hardware divide instruction (that is, ARMv7-M or ARMv7-R).
|
__TARGET_FEATURE_THUMB |
- | If the target architecture supports Thumb, ARMv4T or later. |
__TARGET_FPU_ |
- |
One of the following is set to indicate the FPU usage:
In addition, if compiling with one of the following
--fpu options, the corresponding target name is set:
|
__TARGET_PROFILE_R |
When you specify the --cpu=7-R option. |
|
__TARGET_PROFILE_M |
When you specify any of the following options:
|
|
__thumb__ |
- |
When the compiler is in Thumb state. That is, you have either specified the
--thumb option on the command-line or #pragma thumb in your source code.Note
|
__TIME__ |
time |
Always defined.
|
_WCHAR_T |
- |
In C++ mode, to specify that
wchar_t is a keyword. |
__TARGET_ARCH_THUMB, and how these values relate to versions of the ARM architecture.9.150 Predefined macros的更多相关文章
- Cross Platform Note: STD C++ Preprocessor directives & pre-defined macros
ref: http://www.cplusplus.com/doc/tutorial/preprocessor/ concolusion: directives: #define #undef #in ...
- Windows Platform Predefined Macros
https://msdn.microsoft.com/en-us/library/b0084kay.aspx
- [原]__FILE__宏
在vs中__FILE__宏代表了当前文件,如果有/FC那么__FILE__代表了当前文件的全路径!否则只表示当前文件名 参考 https://msdn.microsoft.com/en-us/li ...
- C++预处理详解
本文在参考ISO/IEC 14882:2003和cppreference.com的C++ Preprocessor的基础上,对C++预处理做一个全面的总结讲解.如果没有特殊说明,所列内容均依据C++9 ...
- VS2010 C++环境下DLL和LIB文件目录及名称修改
VS2010 C++环境下DLL和LIB文件目录及名称修改 转自:http://blog.csdn.net/archielau/article/details/8507581 DLL工程,Debug版 ...
- gcc 编译器参数
一.GCC编译过程 参考:http://hi.baidu.com/zengzhaonong/item/c00e079f500adccab625314f------------------------- ...
- C++ 中常见预定义宏的使用
http://blog.csdn.net/hgl868/article/details/7058906 替代字符串: #define DOWNLOAD_IMAGE_LOG /var/log/png.l ...
- C++ 中宏的使用 --来自:http://blog.csdn.net/hgl868/article/details/7058906
宏在代码中的使用实例: g_RunLog2("Middleware client for Linux, build:%s %s", __DATE__, __TIME__); 下面详 ...
- [C] zintrin.h : 智能引入intrinsic函数。支持VC、GCC,兼容Windows、Linux、Mac OS X
博客来源:http://blog.csdn.net/zyl910/article/details/8100744 现在很多编译器支持intrinsic函数,这给编写SSE等SIMD代码带来了方便.但是 ...
- __LINE__ __DATE__ __FILE__ __TIME__ 等宏定义解释
Names the predefined ANSI C and Microsoft C++ implementation macros. The compiler recognizes predefi ...
随机推荐
- FEDORA 显卡驱动安装
FEDORA 显卡驱动安装 在fedora中akmod-nvidia包可以自动的处理开源驱动屏蔽等各种问题, 强烈推荐用这个安显卡驱动. -1. 在 BIOS 中关闭安全启动 0. 切换桌面环境至 X ...
- python重拾基础第四天
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1. 列表生成式,迭代器&生成器 列表生成式 我现在有个需求, ...
- C#中关于 object,dynamic 一点使用心得
首先说一下使用场景 WebAPI接口入参使用 object和 dynamic 后续解析和处理 1.object和dynamic 区别 在.NET中,object和dynamic也有一些区别: obj ...
- SQL注入方法
目录 前言 如何测试与利用注入点 手工 注入思路 工具 sqlmap -r -u -m --level --risk -v -p --threads -batch-smart --os-shell - ...
- 2 - 【RocketMQ 系列】CentOS 7.6 安装部署RocketMQ
二.开始安装部署RocketMQ 官方网站:https://rocketmq.apache.org/ 各版本要求: 1.版本选取 下载地址: https://github.com/apache/roc ...
- 全网最适合入门的面向对象编程教程:03 类和对象的Python实现-为自定义类添加属性
摘要: 本文主要介绍了,当使用 Python 创建自定义类时,如何为其添加属性,包括为类和实例添加属性两种,以及如何获取自定义的属性等内容. 往期推荐: 学嵌入式的你,还不会面向对象??! 全网最适合 ...
- BootstrapTable 行内编辑解决方案:bootstrap-table-editor
最近开发的一个业务平台,是一个低代码业务平台.其中用到的了bootstrap-table组件.但是bootstrap-table自身不带编辑功能. 通过搜索发现,网上大部分的解决方案都是使用x-edi ...
- 创建数据库时排序规则utf8_general_ci与utf8_bin的区别
在MySQL数据库中,字符集(如utf8)定义了字符如何存储,而排序规则(Collation)则定义了字符如何比较.排序和区分大小写.utf8_general_ci和utf8_bin是两种常用的UTF ...
- webpack4.15.1 学习笔记(三) — 模块热替换HMR
目录 模块热替换 HMR HMR监听文件变化 HMR 修改样式表 模块热替换 HMR 允许在运行时更新各种模块,而无需进行完全刷新.不适用于生产环境,意味着应当只在开发环境使用.启用HMR实际上就是更 ...
- Django日期字段默认值default=timezone.now
如果你确实希望默认值是当前日期和时间,Django 提供了一个方便的函数 django.utils.timezone.now 来实现这一目的. 你可以这样调整你的模型,以使用当前日期和时间作为默认值: ...