gpt4 book ai didi

c - 为什么我需要在同名的 .c 文件中包含一个 .h 头文件?

转载 作者:太空狗 更新时间:2023-10-29 16:57:51 25 4
gpt4 key购买 nike

因此,我在 Head First C 中继续学习,我们正在学习将多个文件一起编译的章节。其中之一是 encrypt.c

#include "encrypt.h"


void encrypt(char *message)
{
char c;
while (*message) {
*message = *message ^ 31;
message++;
}
}

encrypt.h 文件重复第一行,末尾有一个分号,为什么我需要它?我明白为什么我需要头文件来解决在定义函数之前使用函数的问题,所以我可以理解#including it in a file that uses encrypt.c,但为什么我在里面需要它加密.c?这只是“因为”原因之一吗?

最佳答案

如果 encrypt.c 的内容完整显示,则您不需要 header 。但包含它仍然是一个好主意,因为:

  1. 如果文件中的一个函数使用另一个函数,那么定义的顺序很重要,因为被调用者必须在调用者之前定义。甚至可以有两个函数 A 和 B,其中每个函数调用另一个,在这种情况下,如果没有至少一个前向声明,您将无法编译代码。将 header 包含在前向声明中可以解决这些问题。
  2. 像您的客户端代码一样使用 header 是让编译器指出前向声明中的签名与实际函数定义之间的差异的好方法。如果未检测到此类问题,可能会导致运行时出现“有趣”的行为和大量麻烦事。

关于c - 为什么我需要在同名的 .c 文件中包含一个 .h 头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18433675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com