我的目标是在我的头文件中声明并定义单个结构模板。然后,我希望使用此模板在我的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 = true
,cflag = true
和dflag = true
。
当我说全局时,我的意思是内容aflag = true
,cflag = true
和dflag = true
(在另一个c文件中定义)现在应该可用于第二个c文件中,如果我希望。唯一的引用是具有结构的头文件。
但是,正如我所料,此示例包含多个错误。我最近才学会了结构的基础知识,并且不确定如何实现我正在寻找的东西,所以如果有人可以解释如何实现这种效果会有所帮助,可能还有代码示例。
谢谢。
答案 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文件中,您可以通过包含标题来使用全局可见的结构。