如何使用另一个C文件中的结构数据?

时间:2011-08-21 00:36:50

标签: c ansi

我在Main.c中定义了一个结构“数据”。

我想在另一个文件app.c的函数中使用此结构的值。

请建议如何执行此操作。

3 个答案:

答案 0 :(得分:4)

我假设你问的是“c”而不是“c#”,因为你的问题是指“.c”文件,而不是“.cs”文件等:

制作一个头文件并将结构放在那里。

在Main.c和app.c

中包含头文件
#include "yourFileNameHere.h"

答案 1 :(得分:2)

通常,您将函数原型定义为受包含保护的头文件:

//module.h

#ifndef MODULE_H //include guard begin
#define MODULE_H

struct foobar{
   void *a_field;
};
void prototype(void);
#endif       //include guard end

当不同文件需要包含相同的标头时,包含防护措施会阻止某些冲突。他们保证只会包含一次。

然后,您可以将该标头包含在具有c扩展名的文件中,该文件实现了已定义的原型:

//module.c

#include "module.h"

void prototype(void){
  //implement prototype function
  struct foobar f;

}

通常每个头文件都有一个c文件关联(这不是强制性的;它是一种约定)。如果只需要定义结构,甚至不需要与标题关联的C文件。如果您还要实现一些函数原型,那么这是组织代码的好方法。

然后在每个需要在其中定义的函数或结构的其他文件中包含头文件:

//otherfile.c

#include "module.h"
struct foobar f;
prototype(); //you can now call prototype function from this file

现在可以编译和链接两个文件(prototype.c,otherfile.c)

答案 2 :(得分:0)

由于您说要在不同的源文件中重用结构的值,我假设您在main.c中定义了结构类型的变量,如:

struct <mystruct> foobar;

如果你想在app.c中使用同样的foobar,你必须在那里声明那个变量,加上 extern

extern struct <mystruct> foobar;