我想在头文件中声明一个结构。当我在头文件中声明一个简单变量时,我只需将变量指定为外部,就像这样。
.c文件中的变量:
int var;
头文件中显示的变量相同:
extern int var;
到目前为止一切顺利。但结构怎么样?如果我的.c文件中有以下结构
typedef struct
{
unsigned char seconds;
unsigned char minutes;
unsigned char hours;
unsigned char day;
unsigned char month;
union
{
unsigned int year;
unsigned char year_byte[2];
}year_vars;
}time;
如何在头文件中声明结构?
答案 0 :(得分:1)
声明全局变量与声明类型不同。如果typedef应该对包含你的h文件的每个人都可见,那么typedef当然需要在h文件中。
反过来说:如果typedef对于你的C文件是本地的,则根本不需要将它呈现给调用者。
请注意,在C中使用全局非常量变量是没有理由的。用C文件中的静态文件范围变量替换它们,这些变量可以通过setter / getter函数访问。
答案 1 :(得分:1)
进入.h go:
extern
变量声明(因此外部可见变量)进入.c go:
答案 2 :(得分:0)
类型定义应仅在标题中。它们不需要在.c
文件中重复。只需在源文件中包含标题即可访问类型定义。
typedef struct
{
...
} time;
#include "time.h"