返回头文件中外部变量的地址 x、 h x、 c 附录c

返回头文件中外部变量的地址 x、 h x、 c 附录c,c,global-variables,extern,C,Global Variables,Extern,我问这个问题的原因是我确信执行了get_x()->id=5,当我访问get_x()->id时,它在某些情况下会变成一个随机值 我想知道x.h中的代码是否总是正确的?若否,何时会有问题? 是的,没错get_x每次都将返回相同、唯一的全局变量的地址。您应该发布导致它成为“某些情况下的随机值”的代码。为什么要编写函数get_x()?为什么不直接访问x(比如,x.id)x是一个全局变量,请确保它不会被程序的其他部分修改。我对stackoverflow为“关闭”定义的规则感到非常不安,因为我最近发送的所有

我问这个问题的原因是我确信执行了
get_x()->id=5
,当我访问
get_x()->id
时,它在某些情况下会变成一个随机值


我想知道x.h中的代码是否总是正确的?若否,何时会有问题?

是的,没错
get_x
每次都将返回相同、唯一的全局变量的地址。您应该发布导致它成为“某些情况下的随机值”的代码。为什么要编写函数
get_x()
?为什么不直接访问
x
(比如,
x.id
x
是一个全局变量,请确保它不会被程序的其他部分修改。我对stackoverflow为“关闭”定义的规则感到非常不安,因为我最近发送的所有2个主题(经过仔细描述)都获得了“关闭”投票。如果人们不能在他们的代码不起作用的时候问这个问题,当他们不知道在某些情况下使用什么工具时,我们可以用stackoverflow做什么?谢谢@ybungalobill,我仍然在调试这个问题,我没有发现什么是代码将其设置为随机值。x.h中的代码是由其他人编写的,我觉得很奇怪。一旦我找到了根本原因,我会给出最新消息。@zhihuifan:我投了那一票,原因是我在上面的评论中说的。这个问题现在更多的是一个代码审查,除了简单的“是”之外,不可能有太多的答案。你可以修正你的问题,我将撤回我的投票。问题应该包含不起作用的代码,而不是起作用的代码。是的,它是正确的
get_x
每次都将返回相同、唯一的全局变量的地址。您应该发布导致它成为“某些情况下的随机值”的代码。为什么要编写函数
get_x()
?为什么不直接访问
x
(比如,
x.id
x
是一个全局变量,请确保它不会被程序的其他部分修改。我对stackoverflow为“关闭”定义的规则感到非常不安,因为我最近发送的所有2个主题(经过仔细描述)都获得了“关闭”投票。如果人们不能在他们的代码不起作用的时候问这个问题,当他们不知道在某些情况下使用什么工具时,我们可以用stackoverflow做什么?谢谢@ybungalobill,我仍然在调试这个问题,我没有发现什么是代码将其设置为随机值。x.h中的代码是由其他人编写的,我觉得很奇怪。一旦我找到了根本原因,我会给出最新消息。@zhihuifan:我投了那一票,原因是我在上面的评论中说的。这个问题现在更多的是一个代码审查,除了简单的“是”之外,不可能有太多的答案。你可以修正你的问题,我将撤回我的投票。问题应该包含不起作用的代码,而不是起作用的代码。
typedef struct _x_t {
 int64_t id;
} x_t;

extern x_t x;

static inline x_t* get_x() {
   return &x;
}
#include "x.h"
x_t x;
get_x()->id = 5;