_at_关键词用于在定义变量时指定变量所在地址。
_at_关键词使用示例如下:
struct link { struct link idata *next; char code *test; }; struct link list idata _at_ 0x40; /* 定义位于内部RAM低128字节区0x40地址处的 结构体 */ char xdata text[256] _at_ 0xE000; /* 定义位于外部RAM 0xE000地址处的 数组 */ int xdata i1 _at_ 0x8000; /* 定义位于外部RAM 0x8000地址处的 整型变量 */ volatile char xdata IO _at_ 0xFFE8; /* 定义地址为 0xFFE8的外部IO */ char far ftext[256] _at_ 0x02E000; /* 定义位于外部RAM 0x2E000地址处的数组 */ void main ( void ){ link.next = (void *) 0; i1 = 0x1234; text [0] = 'a'; IO = 6; ftext [0] = 'f'; }
在一个.c文件中如上定义,在另一个.c文件中可用如下方法引用这些变量:
struct link { struct link idata *next; char code *test; }; extern struct link idata list; extern char xdata text[256]; extern int xdata i1; extern volatile char xdata IO;