C 头文件中使用另一个头文件中的结构体
时间: 2024-10-12 07:09:11 浏览: 52
在C语言中,当你在一个头文件(`.h`)中定义了一个结构体,而在另一个头文件中需要使用这个结构体时,你需要通过 `extern` 关键字声明该结构体。这样做是为了防止重复定义,因为结构体在不同的翻译单元(Translation Unit)中包含会引发错误。
例如,假设有一个名为 `person.h` 的头文件:
```c
// person.h
#ifndef PERSON_H
#define PERSON_H
typedef struct {
char name[50];
int age;
} Person;
#endif // PERSON_H
```
然后,在另一个头文件如 `friend_list.h` 中,你会像这样导入并声明 `Person` 结构体:
```c
// friend_list.h
#include "person.h"
extern Person *create_person(char* name, int age);
```
在实现这两个头文件的源文件 `.c` 文件中,你需要完整地定义 `Person` 结构体,并提供 `create_person` 函数的实现:
```c
// person.c (包含在编译链接阶段)
#include "person.h"
Person *create_person(char* name, int age) {
// 实现...
}
// friend_list.c (包含在编译链接阶段)
#include "friend_list.h"
#include "person.h" // 这里再次包含person.h,确保person类型的完整定义
int main() {
Person *p = create_person("Alice", 25); // 可以直接使用
return 0;
}
```
阅读全文