在头文件中声明一个extern结构模板,以便在c文件中全局使用

时间:2016-11-03 04:38:02

标签: c

我的目标是在我的头文件中声明并定义单个结构模板。然后,我希望使用此模板在我的c文件中声明和定义个人结构。

这是我瞄准的一个粗略的例子:

标题文件

#include <bool.h>

extern struct options 
{
    extern bool aflag;
    extern bool cflag;
    extern bool dflag;
} option1;
...

c档

#include "header.h"

struct options option1;
void function(void) 
{
option1.aflag = true;
option1.cflag = true;
option1.dflag = true;
}
...

我希望这会导致结构option1全局可见。全局内容应为aflag = truecflag = truedflag = true

当我说全局时,我的意思是内容aflag = truecflag = truedflag = true(在另一个c文件中定义)现在应该可用于第二个c文件中,如果我希望。唯一的引用是具有结构的头文件。

但是,正如我所料,此示例包含多个错误。我最近才学会了结构的基础知识,并且不确定如何实现我正在寻找的东西,所以如果有人可以解释如何实现这种效果会有所帮助,可能还有代码示例。

谢谢。

1 个答案:

答案 0 :(得分:1)

声明结构时,您可以定义类型。

如果您希望struct全局可见,那么您需要定义一个不是类型的变量。

所以你可以在你的foo.h头文件中做这样的事情:

struct foo {
    int bar;
    double baz;
};

extern struct foo globally_visible_foo_yay;

然后在你想要的foo.c文件中:

#include "foo.h"
struct foo globally_visible_foo_yay = {.bar = 42, .baz = 42.0};

在其他一些C文件中,您可以通过包含标题来使用全局可见的结构。