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

发布于 2024-12-01 00:38:42 字数 99 浏览 2 评论 0原文

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

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

请建议如何执行此操作。

I have defined a structure "data" in Main.c.

I want to use the values of this structure in a function of another file app.c.

Please suggest how to do this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

世界等同你 2024-12-08 00:38:42

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

创建一个头文件并将结构放在那里。

在 Main.c 和 app.c 中包含头文件

#include "yourFileNameHere.h"

I assume you are asking about "c" and not "c#" since your question refers to ".c" files and not ".cs" files, etc:

Make a header file and put the struct there.

Include the header file in both Main.c and app.c

#include "yourFileNameHere.h"
倒带 2024-12-08 00:38:42

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

//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;

}

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

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

//otherfile.c

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

现在可以编译并链接这两个文件(prototype.c、otherfile.c)

Usually you define a function prototype into a header file protected with include guards:

//module.h

#ifndef MODULE_H //include guard begin
#define MODULE_H

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

Include guards prevent some including conflicts when different files need to include the same header. They guarantee it will be included only once.

Then you can include that header into a file with c extension that implement the defined prototypes:

//module.c

#include "module.h"

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

}

Usually every header file has a c file associated (that's not mandatory; it's a convention). If you need only to define structure you can even not need a C file associated with the header. If you have also some function prototypes to implement, that's a good way to organize your code.

Then include the header file in every other file that need the functions or structures defined inside it:

//otherfile.c

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

Now it's possible to compile and link together both files (prototype.c, otherfile.c)

九厘米的零° 2024-12-08 00:38:42

既然你说你想在不同的源文件中重用结构的值,我假设你在 main.c 中定义了结构类型的变量,如下所示:

struct <mystruct> foobar;

如果你想在 app.c 中使用相同的 foobar,你必须声明该变量也存在,加上 extern

extern struct <mystruct> foobar;

Since you say you want to reuse the values of the structure in a different source file I assume you defined a variable of your structure type in main.c like:

struct <mystruct> foobar;

If you want to use this same foobar in app.c, you have to declare that variable there as well, with the addition extern:

extern struct <mystruct> foobar;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文