引言
- 在一个复杂的程序中,c语言所有的数据类型往往不能满足我们的需要,往往需要自己定义数据结构。在这里会有一个问题,当你的代码不存放在一个源文件中,并且函数之间还有结构体数据之间的传输。那么在不同的源文件中如何共享同一个结构体呢?
不同源文件共享同一个结构体
- 首先,我们可能会考虑到的就是在不同的源文件中都定义一个同一个结构体,然而,虽然结构体的数据类型一样,名称一样,但是在编译器编译过程中,他并不会看成是同一个数据类型,并且报错(你传入的数据类型与所需要的不符)。
- 无论是集成环境还是gcc编译器他的方法都是一样的。
- 首先定义一个头文件
//头文件 str.h
#ifndef _STR_H_ //ifndef 就是if no define 的缩写就是
//如果没有定义的话就执行下面的代码,定义
//了就不用重新定义。_STR_H_这个就是你的
//头文件名大写加上下划线。
#define _STR_H_
typedef struct {
char *ch;
int length;
} Str;
#endif
2.在每个源文件中都引入这个头文件
#include "str.h"
- 因为在头文件中先有判断,也就不用担心编译时有多个结构体产生。