c - 试图理解这段c代码但就是无法理解

标签 c pointers structure memory-address

我已经在谷歌上搜索了几个小时来寻找以下代码的解释,但只是找不到,感谢有人可以帮助我。

我已经定义了内存位置(地址只是示例),

#define address (0x000001)

然后我有一个结构

typedef struct{
int a;
int c;
int f;
} foo;

最后(这部分我无法弄清楚)我有这样的定义

#define foo__ ( (foo *) address)

这是否意味着我正在创建宏,从而可以访问结构 foo 的元素,并且 foo 结构从 0x000001 开始?

我知道代码可以工作 - 已经对其进行了测试,但如果我无法理解它的作用,则没有任何用处。

编辑。抱歉,有关问题的信息不清楚 - 是的,NXP 的 LPC 微 Controller 用于嵌入式环境 - 首先应该告诉你这一点 - 我的错。

感谢您的回答和赞扬 - 我现在明白了。

最佳答案

它创建一个宏,这样如果您使用 foo__,它将假定该 typedef'd struct 的实例存在于 (在此示例中)0x000001

因此,如果某个实例确实存在,并且您可以访问它,那么您将能够相应地访问这些元素。但是,这里没有任何保护,实际上由您决定尝试这样做是否明智且安全。

关于c - 试图理解这段c代码但就是无法理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328604/

相关文章:

c - 为什么我在 Raspberry-Pi Jessie Lite 上启动时无法访问标准输入?

c++ - 为什么我必须将地址转换为整数才能使其可分配?

c - C 中的 strtok 和 int 与 char

c - 元素及以后的指针算术。这段代码有什么问题?

c++ - 从以分号分隔的文件中读取并存储到数组中

c - 如何访问结构数组中的值

c - 编写函数输出分数直方图

C - 在源文件中创建结构

c - 在 x86 中恢复堆栈帧

c - c中相同代码的不同答案