现在有两个头文件,两个源文件,其中一个源文件要调用另一个源文件的函数,其中一个头文件要调用另一个头文件声明的结构体,请举例子说明应该怎么写
时间: 2024-03-11 18:50:26 浏览: 50
C程序多个.c和.h使用示例
假设有以下两个头文件和源文件:
```c
// file1.h
#ifndef FILE1_H
#define FILE1_H
#include "file2.h"
struct person {
char name[20];
int age;
};
void print_person(struct person p);
#endif /* FILE1_H */
// file2.h
#ifndef FILE2_H
#define FILE2_H
void say_hello();
#endif /* FILE2_H */
// file1.c
#include "file1.h"
#include <stdio.h>
void print_person(struct person p) {
printf("Name: %s, Age: %d\n", p.name, p.age);
}
// file2.c
#include "file2.h"
#include <stdio.h>
void say_hello() {
printf("Hello, world!\n");
}
```
在 `file1.c` 中调用 `file2.c` 中的函数 `say_hello()`,以及引用 `file2.h` 中声明的结构体 `person`,需要在 `file1.c` 中先包含 `file1.h`,再包含 `file2.h`,如下所示:
```c
#include "file1.h"
#include "file2.h"
int main() {
struct person p = {"Alice", 25};
print_person(p);
say_hello();
return 0;
}
```
注意,头文件的包含顺序很重要,因为后面的头文件可能会依赖前面头文件中声明的东西。在上面的例子中,必须先包含 `file1.h`,因为 `print_person()` 函数依赖于 `person` 结构体的声明。然后才能包含 `file2.h`,因为 `say_hello()` 函数不依赖于 `person` 结构体。
阅读全文