gpt4 book ai didi

c - 设置静态分配对象的内存位置

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:28 24 4
gpt4 key购买 nike

我有以下代码:

struct str {
int a;
int b;
};

extern struct str c;

在汇编中(使用 GNU 作为),我可以像这样设置 c 的内存位置:

.global c
.set c, 0x12345678

有没有一种方法可以在 C 中以可移植的方式执行此操作?此代码适用于微 Controller ,因此我不认为这是“不好的做法”。

最佳答案

是也不是。您可以编写基本上可以用任何编译器编译 的代码。不过,之后会发生什么将取决于。

 struct str *c = (struct str *)0x12345678;

正如我所说,几乎所有编译器都应该编译这么多(尽管如果您使用的数字是编译器认为不能转换为地址的数字,它可能会被拒绝)。当您尝试取消引用指针时,将取决于编译器如何将其转换为实际地址(有所不同,但旨在成为知道机器寻址的人所期望的)以及它生成的地址是否是您实际拥有的地址访问权限(如果是,请说明您拥有的访问权限)。

关于c - 设置静态分配对象的内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com