【发布时间】:2016-02-09 23:49:16
【问题描述】:
我在头文件中声明了一个结构体,我们以这个为例:
//file.h
#ifndef FILE_H_INCLUDED
#define FILE_H_INCLUDED
typedef struct {
int x;
int y;
} Point;
#endif // FILE_H_INCLUDED
然后我在另一个文件中定义了该结构,其中包含我将在 main.c 上使用的函数原型:
//functions.c
#include "file.h"
Point p = {{1},{2}};
现在我的问题是,如何在 main.c 上使用该结构?想做类似的事情:
//main.c
#include "file.h"
printf("Point x: %d", p.x);
现在,我真正的结构有 8 个字段,它是一个包含 40 个元素的数组,所以它是 40 行代码,我不想把它放在 main.c 中,因为我希望它尽可能清晰。我不能使用全局变量。
【问题讨论】:
-
看起来您已经在使用全局变量
p。 -
那么定义应该是什么?
-
如果它在另一个文件中并且它不是全局的,那么它不能在该文件之外直接访问。所以你的两个要求似乎是矛盾的。您可以在
function.c中定义一个函数,该函数返回p或指向p的指针(如果可以接受)。 -
@kaylum 你的意思是我应该把结构体的所有定义都放在一个函数里面,例如:Point initializeStruct (Point p)?
-
不知道。因为您陈述的要求不清楚。您清楚地告诉我们要求是什么,然后我们才能提供答案。