C - 为什么我不能从另一个文件访问指向结构的指针并获取成员



这是一个可重复的例子,而不是整个代码——整个代码太大了。。我的问题是,我有一个使用malloc创建的结构,我需要从另一个文件中的另一个函数访问它,但我一直得到segfault。。。

头文件main.h

#ifndef main_a
#define main_a
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct cmd_s
{
int n;
} cmd_t;
extern cmd_t *ptr;
void push(char *line);
#endif

主.c文件main.c

#include "main.h"
cmd_t *ptr = NULL;
int main(void)
{
cmd_t *ptr = malloc(sizeof(cmd_t));
ptr->n = 5;
push("line");

return (0);
}

以及我需要从命名的opcode.c 访问结构的位置

操作码.c

#include "main.h"
void push(char *line)
{
int new = ptr->n;
}

注意,这不是实际的代码,实际的代码有有用的值,这是一个包含我面临挑战的例子

我试着用static代替,但是我得到了同样的错误。我还是c编程的新手。。我不想改变我通过malloc创建结构的方式,因为另一个函数依赖于它…我只需要让程序中的另一个文件可以访问malloc结构。谢谢

int main(void)
{
cmd_t *ptr = malloc(sizeof(cmd_t));

创建仅在函数main中可见的新ptr变量。您的push看到的是全局指针ptr,而不是您拥有的malloc

你需要

int main(void)
{
ptr = malloc(sizeof(*ptr));
/* .... */

sizeof中使用obiects而不是类型(如本例所示(

相关内容

  • 没有找到相关文章

最新更新