在头文件中声明结构

时间:2015-03-23 13:21:30

标签: c

我想在头文件中声明一个结构。当我在头文件中声明一个简单变量时,我只需将变量指定为外部,就像这样。

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

如何在头文件中声明结构?

3 个答案:

答案 0 :(得分:1)

声明全局变量与声明类型不同。如果typedef应该对包含你的h文件的每个人都可见,那么typedef当然需要在h文件中。

反过来说:如果typedef对于你的C文件是本地的,则根本不需要将它呈现给调用者。

请注意,在C中使用全局非常量变量是没有理由的。用C文件中的静态文件范围变量替换它们,这些变量可以通过setter / getter函数访问。

答案 1 :(得分:1)

进入.h go:

  • 用于外部可见变量的所有类型的定义
  • 所有extern变量声明(因此外部可见变量)

进入.c go:

  • 仅供内部可见变量使用的所有类型的定义
  • 所有变量的定义(外部和内部可见)

答案 2 :(得分:0)

类型定义应仅在标题中。它们不需要在.c文件中重复。只需在源文件中包含标题即可访问类型定义。

time.h中

typedef struct
{
  ...
} time;

time.c

#include "time.h"