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
支持以下 GCC 函数属性:
支持以下其他 TI 特定函数属性:
例如,此函数声明使用 alias 属性使“my_alias”成为“myFunc”函数的别名:
void my_alias() __attribute__((alias("myFunc")));
aligned 函数属性会使用指定的对齐方式来对齐函数。该对齐必须为 2 的幂。
always_inline 函数属性与 FUNC_ALWAYS_INLINE pragma 具有相同的效果。请参阅 节 5.11.12
calls 属性与 CALLS pragma 具有相同的效果,相关描述请参阅 节 5.11.1。
format 属性应用于 stdio.h 中 printf、fprintf、sprintf、snprintf、vprintf、vfprintf、vsprintf、vsnprintf、scanf、fscanf、vfscanf、vscanf、vsscanf 和 sscanf 的声明。因此,当启用 GCC 扩展时,系统会根据格式字符串参数中的格式说明符对这些函数的数据参数进行类型检查,并在不匹配时发出警告。如果不需要这些警告,可以通过常见方式抑制这些警告。
有关如何使用 interrupt 函数属性的更多信息,请参阅节 5.11.16。
malloc 属性应用于 stdlib.h 中 malloc、calloc、realloc 和 memalign 的声明。
naked 属性标识了使用 __asm
语句编写为嵌入式汇编函数的函数。编译器不会为此类函数生成序言和结语序列。请参阅节 5.10。
noinline 函数属性与 FUNC_CANNOT_INLINE pragma 具有相同的效果。请参阅 节 5.11.13
ramfunc 属性指定一个函数将被放置在 RAM 中并从中执行。ramfunc 属性允许编译器优化 RAM 执行的函数,以及自动将函数复制到基于闪存的器件上的 RAM 上。例如:
__attribute__((ramfunc))
void f(void) {
...
}
--ramfunc=on 选项指定使用此选项编译的所有函数都放置在 RAM 中并从中执行,即使未使用此函数属性也是如此。
较新的 TI 链接器命令文件通过将具有此属性的函数放置在 .TI.ramfunc 段中来自动支持 ramfunc 属性。如果您的链接器命令文件不包含 .TI.ramfunc 段的段规格,您可以修改链接器命令文件以将此段放在 RAM 中。有关段放置的详细信息,请参阅 ARM 汇编语言工具用户指南。
target 属性使函数在 ARM(32 位)或 Thumb(16 位)模式下编译。target 属性与 CODE_STATE pragma 的效果相同。下述示例使用 target 属性。
__attribute__((target("arm"))) void foo(int arg1, int arg2)
__attribute__((target("thumb"))) void foo(int arg1, int arg2)
请注意,ACLE 规格中所述的“pcs”属性不受支持。
retain 属性与 RETAIN pragma (节 5.11.27) 具有相同的效果。也就是说,即使在应用的其他地方没有引用包含该函数的段,也不会从条件链接输出中省略该段。
当 section 属性在函数上使用时,具有与 CODE_SECTION pragma 相同的效果。请参阅 节 5.11.4
weak 属性与 WEAK pragma (节 5.11.32) 具有相同的效果。