我在Main.c
中定义了一个结构“数据”。
我想在另一个文件app.c
的函数中使用此结构的值。
请建议如何执行此操作。
答案 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;