IAR的编译器支持通过内建的section专用运算符来获取段(section)或块(block)的起始地址、结束地址和大小。这些运算符可以使用链接器配置文件中定义的段和块,例如,可用于在代码中获取堆栈的地址和大小,因为堆栈是一个块。
__section_begin 返回指定的段或块的起始地址;
__section_end 返回指定的段或块的结束地址;
__section_size 返回指定的段或块的大小,以字节为单位。
使用方法
Section运算操作不是标准的C语言特性,如果使用section运算操作,需要在IAR的编译器设置里面,设置语言一致性为“Standard with IAR
extensions”。
图 1 语言一致性设置
Section运算符操作的对象是在源码中通过#pragma location预处理指令直接放置函数或变量到自定义的section,或在链接器配置文件中定义的block。这些运算符的声明语法如下所示:
void * _