在一个c项目当中,源文件没有导入某个头文件,却能使用这个头文件里面typedef struct{……}a;中的a来声明变量。
有可能在另外的头文件里,已经包含了这个头文件,在项目里已经导入了另外的头文件,不然是不可能发生的。
可能的原因:
1,typedef struct{……}a 在另一个文件file_other里做了引用,你当前源文件引用了file_other;
2,你用的什么IDE工具,是否在工程全局配置里,已经对定义typedef struct{……}a 的文件做了引用?
看到你的邀请,果断过来了。
上面回答可能有点片面,我觉得唯一的两种可能:
源文件可以包括头文件,即可以不创建头文件而进行头文件的操作,比如说C++中的class 类,既可以再头文件中声明,也可以在源文件中声明.
回归到你这个问题,你给的代码是一个结构体类型,结构体类型也是一样的,可以子啊源文件中进行声明操作
typedef已经是重命名你的结构体为a了,所以你当然可以直接用a来实例化结构体啊,就跟你int a;a=3;类似,只不过结构体是你自定义的类型,int是c的基本类型罢了。
IDE中,在不明白的符号上点鼠标右键,在弹出的菜单中选转到定义。
查看这个数据类型的来源