段声明pragma 伪指令将当前段更改为MPLAB C18 分配相关类型的信息的段。段是位于特定存储器地址的应用程序的一部分。段可以包含代码或数据,可以位于程序存储器或数据存储器中。对于每种存储器,都有两种段类型。即:
(1)程序存储器
a> code: 包含可执行指令
b> romdata: 包含变量和常量
(2) 数据存储器
a>udata 包含静态分配未初始化的用户变量
b>idata 包含静态分配已初始化的用户变量
A.语法结构:
段伪指令:
# pragma udata [ 属性列表] [section-name [=address]]
# pragma idata [ 属性列表] [section-name [=address]]
# pragma romdata [overlay] [section-name [=address]]
# pragma code [overlay] [section-name [=address]]
其中,section-name 是C标识符。 address 是整形常量
B.段内容
code段包含可执行的内容,位于程序存储器中。romdata段包含分配到程序存储器的数据(一般是用root限定符定义的变量)。udata段包含静态分配到输出存储器的未进行初始化的全局数据。idata
段包含静态分配到数据存储器的已进行初始化过的全局数据。
当一个数据块没有足够的空间用于存放一个连续的数据时(数组);此时便可用#pragma idata 或#pragma udata来定义一个新的存放数据块的区域。但是#pragma idata 或#pragma udata申请的