ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
編譯器維護(hù)并識(shí)別表 2-30 中列出的預(yù)定義宏名稱。
| 宏名稱 | 說明 |
|---|---|
| __16bis__ | 如果選擇了 16-BIS 狀態(tài)(使用了 -code_state=16 選項(xiàng)),則已定義;否則未定義。 |
| __32bis__ | 如果選擇了 32-BIS 狀態(tài)(未使用 -code_state=16 選項(xiàng)),則已定義;否則未定義。 |
| _AEABI_PORTABILITY_LEVEL | 定義為 1,以便在包含頭文件時(shí),全面移植目標(biāo)文件。定義為 0以便完全兼容 C 標(biāo)準(zhǔn)。有關(guān)詳細(xì)信息,請(qǐng)參閱 ARM 標(biāo)準(zhǔn)。 |
| __big_endian__ | 如果選擇了大端模式(使用了 --endian=big 選項(xiàng)或未使用 --endian=little 選項(xiàng)),則已定義;否則未定義。 |
| __DATE__(1) | 以mmm dd yyyy 形式擴(kuò)展到編譯日期 |
| __FILE__(1) | 擴(kuò)展到當(dāng)前源文件名 |
| _INLINE | 如果使用了優(yōu)化(--opt_level 或 -O 選項(xiàng)),則擴(kuò)展為 1;否則未定義。 |
| __LINE__(1) | 擴(kuò)展到當(dāng)前行號(hào) |
| __little_endian__ | 如果選擇了小端模式(使用了 --endian=little 選項(xiàng)),則已定義;否則未定義。 |
| __PTRDIFF_T_TYPE__ | 定義為 ptrdiff_t 類型 |
| __signed_chars__ | 如果 char 類型默認(rèn)為有符號(hào)類型,則已定義 |
| __SIZE_T_TYPE__ | 定義為 size_t 類型 |
| __STDC__(1) | 定義為 1 以表示編譯器符合 ISO C 標(biāo)準(zhǔn)。有關(guān)ISO C標(biāo)準(zhǔn)的例外情況,請(qǐng)參閱節(jié) 5.1。 |
| __STDC_VERSION__ | C 標(biāo)準(zhǔn)宏。 |
| __STDC_HOSTED__ | C 標(biāo)準(zhǔn)宏。始終定義為 1。 |
| __STDC_NO_THREADS__ | C 標(biāo)準(zhǔn)宏。始終定義為 1。 |
| __TI_COMPILER_VERSION__ | 已定義為 7-9 位整數(shù),具體取決于 X 是 1、2 還是 3 位。該數(shù)字不包含小數(shù)。例如,版本 3.2.1 表示為 3002001。去掉前導(dǎo)零以防止數(shù)字被解釋為八進(jìn)制。 |
| __TI_EABI_SUPPORT__ | 如果啟用了 EABI ABI(這是默認(rèn)設(shè)置),則定義為 1;否則未定義。 |
| __TI_FPALIB_SUPPORT__ | 如果 FPA 字節(jié)序用于存儲(chǔ)雙精度浮點(diǎn)值,則定義為 1;否則未定義。 |
| __TI_GNU_ATTRIBUTE_SUPPORT__ | 如果啟用了 GCC 擴(kuò)展(這是默認(rèn)設(shè)置),則定義為 1 |
| __TI_NEON_SUPPORT__ | 如果目標(biāo)是 NEON SIMD 擴(kuò)展(使用了 --neon 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_STRICT_ANSI_MODE__ | 如果啟用了嚴(yán)格的ANSI/ISO 模式(使用了 --strict_ansi 選項(xiàng)),則定義為 1;否則定義為 0。 |
| __TI_STRICT_FP_MODE__ | 如果使用了 --fp_mode=strict(默認(rèn)設(shè)置),則定義為 1;否則定義為 0。 |
| __TI_ARM__ | 始終已定義 |
| __TI_ARM_V4__ | 如果目標(biāo)是 v4 架構(gòu) (ARM7)(使用 -mv4 選項(xiàng)),則已定義為 1;否則未定義。 |
| __TI_ARM_V5__ | 如果目標(biāo)是 v5E 架構(gòu) (ARM9E)(使用 -mv5e 選項(xiàng)),則已定義為 1;否則未定義。 |
| __TI_ARM_V6__ | 如果目標(biāo)是 v6 架構(gòu) (ARM11)(使用了 -mv6 選項(xiàng)),則已定義為 1;否則未定義。 |
| __TI_ARM_V6M0__ | 如果目標(biāo)是 v6M0 架構(gòu) (Cortex-M0)(使用了 -mv6M0 選項(xiàng)),則已定義為 1;否則未定義。 |
| __TI_ARM_V7__ | 如果目標(biāo)是任意 v7 架構(gòu) (Cortex),則定義為 1;否則未定義。 |
| __TI_ARM_V7A8__ | 如果目標(biāo)是 v7A8 架構(gòu) (Cortex-A8)(使用了 -mv7A8 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_ARM_V7M3__ | 如果目標(biāo)是 v7M3 架構(gòu) (Cortex-M3)(使用了 -mv7M3 選項(xiàng)),則已定義為 1;否則未定義。 |
| __TI_ARM_V7M4__ | 如果目標(biāo)是 v7M4 架構(gòu) (Cortex-M4)(使用了 -mv7M4 選項(xiàng)),則已定義為 1;否則未定義。 |
| __TI_ARM_V7R4__ | 如果目標(biāo)是 v7R4 架構(gòu) (Cortex-R4)(使用了 -mv7R4 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_ARM_V7R5__ | 如果目標(biāo)是 v7R5 架構(gòu) (Cortex-R5)(使用了 -mv7R5 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_FPV4SPD16_SUPPORT__ | 如果啟用了 VFP 協(xié)處理器(使用了 --float_support=fpv4spd16 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_VFP_SUPPORT__ | 如果啟用了 VFP 協(xié)處理器(使用了任意 --float_support 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_VFPLIB_SUPPORT__ | 如果 VFP 字節(jié)序用于存儲(chǔ)雙精度浮點(diǎn)值,則定義為 1;否則未定義。 |
| __TI_VFPV3_SUPPORT__ | 如果啟用了 VFP 協(xié)處理器(使用了 --float_support=vfpv3 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_VFPV3D16_SUPPORT__ | 如果啟用了 VFP 協(xié)處理器(使用了 --float_support=vfpv3d16 選項(xiàng)),則定義為 1;否則未定義。 |
| __TI_WCHAR_T_BITS__ | 定義為 wchar_t 類型。 |
| __TIME__(1) | 以“hh:mm:ss”形式擴(kuò)展到編譯時(shí)間 |
| __unsigned_chars__ | 如果 char 類型默認(rèn)為無符號(hào)類型(默認(rèn)設(shè)置),則已定義 |
| __WCHAR_T_TYPE__ | 定義為 wchar_t 類型。 |
名稱中包含 __TI_ARM 的宏是舊的 __TI_TMS470 宏的副本。例如,__TI_ARM_V7__ 是 __TI_TMS470_V7__ 宏的新名稱。舊的宏名稱仍然存在并且可以繼續(xù)使用。
可以按照與任何其他已定義名稱相同的方式使用表 2-30 中列出的名稱。例如,
printf ( "%s %s" , __TIME__ , __DATE__);轉(zhuǎn)換為類似如下行:
printf ("%s %s" , "13:58:17", "Jan 14 1997");此外,ARM C 語言擴(kuò)展 (ACLE) v2.0 規(guī)范描述了標(biāo)識(shí) ARM 架構(gòu)特征的宏以及 C/C++ 實(shí)現(xiàn)如何使用該架構(gòu)。所有 ACLE 預(yù)定義宏都以前綴 __ARM 開頭。表 2-31 列出了 ACLE 規(guī)范中提到的宏以及規(guī)范中可提供更多信息的章節(jié)。有些宏未定義,是因?yàn)檫@些宏不適用于任何 Cortex-M 或 Cortex-R 處理器變體。
| 宏名稱 | 說明 | ACLE 規(guī)范章節(jié) |
|---|---|---|
| __ARM_32BIT_STATE | 如果編譯器為 ARM 32 位處理器變體生成代碼(-mv6m0、-mv7m3、-mv7m4、-mv7a8、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.1 節(jié)) |
| __ARM_64BIT_STATE | 未定義 | (第 5.4.1 節(jié)) |
| __ARM_ACLE | 對(duì)于所有 Cortex-M 和 Cortex-R 處理器變體(-mv6m0、-mv7m3、-mv7m4、-mv7r4 和 -mv7r5),定義為 200。 | (第 3.4、5.2 節(jié)) |
| __ARM_ALIGN_MAX_PWR | 不支持 | (第 6.5.2 節(jié)) |
| __ARM_ALIGN_MAX_STACK_PWR | 不支持 | (第 6.5.3 節(jié)) |
| __ARM_ARCH | 確定在編譯器命令行上選擇的 ARM 架構(gòu)版本。
|
(第 5.1 節(jié)) |
| __ARM_ARCH_ISA_A64 | 未定義 | (第 5.4.1 節(jié)) |
| __ARM_ARCH_ISA_ARM | 如果編譯器為支持 ARM 指令集的處理器變體生成代碼(-mv7a8、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.1 節(jié)) |
| __ARM_ARCH_ISA_THUMB | 如果編譯器為支持 THUMB-1 指令集的處理器變體生成代碼,則定義為 1。如果編譯器為支持 THUMB-2 指令集的處理器變體生成代碼,則定義為 2;否則未定義。 | (第 5.4.1 節(jié)) |
| __ARM_ARCH_PROFILE | 不支持 | (第 5.4.2 節(jié)) |
| __ARM_BIG_ENDIAN | 默認(rèn)定義為 1;如果使用了 --little-endian (-me) 選項(xiàng),則未定義。 | (第 5.3 節(jié)) |
| __ARM_FEATURE_CLZ | 如果編譯器為支持 CLZ 指令的處理器變體生成代碼(-mv7m3、-mv7m4、-mv7a8、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.5 節(jié)) |
| __ARM_FEATURE_COPROC | 不支持 | (第 5.9 節(jié)) |
| __ARM_FEATURE_CRC32 | 未定義 | (第 5.5.8 節(jié)) |
| __ARM_FEATURE_CRYPTO | 未定義 | (第 5.5.7 節(jié)) |
| __ARM_FEATURE_DIRECTED_ROUNDING | 未定義 | (第 5.5.9 節(jié)) |
| __ARM_FEATURE_DSP | 如果編譯器為支持 DSP 指令/內(nèi)在函數(shù)的 Cortex-M 或 Cortex-R 處理器生成代碼(-mv7m4、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.7 節(jié)) |
| __ARM_FEATURE_FMA | 不支持 | (第 5.5.3 節(jié)) |
| __ARM_FEATURE_FP16_SCALAR_ ARITHMETIC | 未定義 | (第 3.4、5.5.13 節(jié)) |
| __ARM_FEATURE_FP16_VECTOR_ ARITHMETIC | 未定義 | (第 5.5.13 節(jié)) |
| __ARM_FEATURE_IDIV | 不支持 | (第 5.4.10 節(jié)) |
| __ARM_FEATURE_JCVT | 未定義 | (第 5.5.14 節(jié)) |
| __ARM_FEATURE_LDREX | 未定義 | (第 5.4.4 節(jié)) |
| __ARM_FEATURE_NUMERIC_MAXMIN | 未定義 | (第 5.5.10 節(jié)) |
| __ARM_FEATURE_QBIT | 不支持 | (第 5.4.6 節(jié)) |
| __ARM_FEATURE_QRDMX | 未定義 | (第 5.5.12 節(jié)) |
| __ARM_FEATURE_SAT | 如果編譯器為支持 SSAT/USAT 指令/內(nèi)在函數(shù)的處理器變體生成代碼(-mv7m3、-mv7m4、-mv7a8、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.8 節(jié)) |
| __ARM_FEATURE_SIMD32 | 如果編譯器為支持所有 SIMD 指令/內(nèi)在函數(shù)的處理器變體生成代碼(-mv7m4、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.9 節(jié)) |
| __ARM_FEATURE_UNALIGNED | 如果編譯器為支持對(duì)存儲(chǔ)器進(jìn)行無符號(hào)訪問的處理器變體生成代碼(-mv7m3、-mv7m4、-mv7a8、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.4.3 節(jié)) |
| __ARM_FP | 對(duì)于 --float_support={fpv4spd16 | fpv5spd16},定義為 6。對(duì)于 --float_support={vfpv2 | vfpv3 | vfpv3d16},定義為 12;否則未定義。 | (第 5.5.1 節(jié)) |
| __ARM_FP16_ARGS | 如果將 16 位浮點(diǎn)類型可以用于參數(shù)和/或結(jié)果,則定義為 1;否則未定義。 | (第 5.5.11 節(jié)) |
| __ARM_FP16_FORMAT_ALTERNATIVE | 未定義 | (第 5.5.2 節(jié)) |
| __ARM_FP16_FORMAT_IEEE | 如果使用了 IEEE 格式的16 位浮點(diǎn)(根據(jù) IEEE 754-2008 標(biāo)準(zhǔn)),則定義為 1;否則未定義。 | (第 5.5.2 節(jié)) |
| __ARM_FP_FAST | 不支持 | (第 5.6 節(jié)) |
| __ARM_FP_FENV_ROUNDING | 不支持 | (第 5.6 節(jié)) |
| __ARM_NEON | 未定義 | (第 3.4、5.5.4 節(jié)) |
| __ARM_NEON_FP | 未定義 | (第 5.5.5 節(jié)) |
| __ARM_PCS | 如果編譯器可以假設(shè)轉(zhuǎn)換單元的默認(rèn)程序調(diào)用標(biāo)準(zhǔn)符合 ARM 架構(gòu)程序調(diào)用標(biāo)準(zhǔn) (AAPCS) 規(guī)范中規(guī)定的“基礎(chǔ)程序調(diào)用標(biāo)準(zhǔn)”(-mv7m3、-mv7m4、-mv7r4 和 -mv7r5),則定義為 1;否則未定義。 | (第 5.7 節(jié)) |
| __ARM_PCS_AAPCS64 | 未定義 | (第 5.7 節(jié)) |
| __ARM_PCS_VFP | 如果默認(rèn)程序調(diào)用約定是在硬件浮點(diǎn)寄存器中傳遞浮點(diǎn)參數(shù)/返回值,則定義為 1;否則未定義。 | (第 5.7 節(jié)) |
| __ARM_ROPI | 未定義 | (第 5.8 節(jié)) |
| __ARM_RWPI | 未定義 | (第 5.8 節(jié)) |
| __ARM_SIZEOF_MINIMAL_ENUM | 定義為最小的枚舉類型大小(packed 為 1 個(gè)字節(jié),int 為 4 個(gè)字節(jié))。這反映了 --enum_type=[packed | int] 選項(xiàng),其中packed是默認(rèn)值。 | (第 3.1.1 節(jié)) |
| __ARM_SIZEOF_WCHAR_T | 如果 --wchar_t=16(默認(rèn)設(shè)置),則定義為 2。如果 --wchar_t=32,則定義為 4。 | (第 3.1.1 節(jié)) |
| __ARM_WMMX | 未定義 | (第 5.5.6 節(jié)) |
| __STDC_IEC_559__ | 未定義 | (第 5.6 節(jié)) |
| __SUPPORT_SNAN__ | 不支持 | (第 5.6 節(jié)) |