在项目的所有文件上使用相同的结构

时间:2012-06-15 01:07:32

标签: c visual-studio-2010 struct

我在项目的所有文件中使用struct的实例,方法是在每个头文件中声明它。

我的问题是:有更容易/自动的方法吗?

这里有一个例子:

好吧,我有一个叫做my_project的项目 包含:main.c func1.c func2.c func3.c。 在主文件上我读取txt文件并将数据保存在struct vector:

for(i=0;i<MAX;i++){ 
  fscanf(f,"%s",&s[i].nome); 
  fscanf(f,"%d",&s[i].id); 
  fscanf(f,"%d",&s[i].quantidade); 
  fscanf(f,"%d",&s[i].lim_min); 
  fscanf(f,"%f",&s[i].consumo_med); 
} 

我想要的是在func2.c和func3.c中使用struct vector

ehst是最好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以在标头中定义struct vector,可能称为vector.h,然后在每个源文件中(或在每个源文件中已包含的标头中)包含vector.h。这是一种常见的方法。这样做的好处是,定义结构向量的文本只出现在一个地方,即vector.h(这可以避免在一个源文件中编辑定义而不是另一个源文件中出现的错误)。它本质上是唯一的方法,因为C不提供任何方式来导入#include以外的定义。

答案 1 :(得分:1)

我假设您在funcXYZ.c文件中包含了main.c中包含的函数声明?您可能只是编写函数代码以将适当的结构作为参数,然后将这些函数与您在main中创建的结构一起使用。

如果出于某种原因,你已经反过来了,即你在main.c中加入了funcXYZ.c,那么你可以使用extern