C语言 使用 AVR 时如何查找变量的地址?



我正在尝试编写一个程序,该程序可以在使用 AVR-GCC 编译的 Teensy 微控制器上检测位图的像素级冲突。我正在尝试计算如何计算位图在屏幕上单个字节的位置,并被告知我应该使用指针。我没有看到位图字节的物理地址与其在屏幕上的位置之间的关系,但我想调查一下。问题是,我无法打印此地址。AVR 没有 printf,我不知道如何让它显示在屏幕上。有没有人有办法在终端中以某种方式生成此地址?

即,如果我有一个位图并想打印出第一个字节的地址,我需要写什么来完成这个:

??? *bit = &car_bitmap[1]; 
???("%??? ", bit);

使用 snprintf 并将字符串发送到终端。在AVR uC上非常昂贵。如果使用 gcc 地址空间扩展,则可能需要链接对长数字的支持。

假设你有一个工作printf(),这应该可以工作:

void * const bit = &car_bitmap[1]; 
printf("%pn", bit);

%p在哪里是如何打印void *。其他指针类型应强制转换为void *以便匹配,但我还是在帧缓冲中使用了地址void *

最新更新