1、在定义结构体时用typedef关键字为结构体类型起一个别名。
此时在定义结构体变量时只需要用别名定义,同时在.h文件中将此变量声明为外部变量时,同样只需要用别名代替结构体类型
例:
.c文件中:
typedef struct //定义一个结构体类型,并将此重命名为LED_InitTypeDef
{
OperationMode_TypeDef Operation_Mode;
LightMode_TypeDef Light_Mode;
uint8_t Strat_Time;
uint8_t End_Time;
uint8_t High_Num;
uint8_t Low_Num;
}LED_InitTypeDef;
LED_InitTYpedef LED_structure; //定义一个结构体类型的变量
.h文件中
extern LED_InitTYpedef LED_structure;//将此结构体变量声明为外部变量
2、在在定义结构体时没有用typedef关键字为结构体类型起一个别名。
此时此时在定义结构体变量时需要加struct,同时在.h文件中将此变量声明为外部变量时,需要对所有结构体内部所以变量引出说明
例:
.c文件中
struct dat //定义结构体数据类型
{
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t week;
uint8_t hour;
uint8_t minute;
uint8_t second;
};//定义
struct dat data;//定义结构体类型变量
.h文件中
extern struct dat //声明为外部变量时把所有的结构体内部变量引出
{
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t week;
uint8_t hour;
uint8_t minute;
uint8_t second;
}data;
注意:
1、不可以在.h文件中定义变量,因为其他文件引用该头文件时会造成多次定义同一个变量的错误
2、全局变量不可以在函数体外赋值,除非定义的时候同为其赋值