【发布时间】:2019-03-16 03:16:57
【问题描述】:
代码:
static volatile unsigned char TMR0 @ 0x01;
static volatile unsigned char PORTA @ 0x05;
static volatile unsigned char PORTB @ 0x06;
static volatile unsigned char PORTC @ 0x07;
此代码来自 PIC16F877A 的 HT-PICC 编译器 pic.h 库文件
我了解 static volatile 和其他关键字的含义。
这里 Timer0 的寄存器地址是 0x01 但是为什么他们在它前面使用@?和指针有关系吗?
【问题讨论】:
-
它几乎可以肯定是一种用于识别地址常量的符号。它不是标准C;它是您正在使用的编译器的非标准扩展。
-
@ 获取 Pascal 中变量的地址(如 C 中的 &),这里可能是某种编译器扩展
-
这个问题可能有助于回答你的问题:stackoverflow.com/questions/23737066/…
-
可能是因为将整数转换为指针通常会引发警告(因为在普通 C 语言中,您不应该对地址进行硬编码)