gpt4 book ai didi

c - code.c 和 code.h 的区别

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:01 24 4
gpt4 key购买 nike

我正在学习 C,我在一些示例中看到代码是用 .h 保存的,我不确定什么时候应该将代码保存到 .h。以 .c 结尾的文件包含 main() 而以 .h 结尾的文件可能包含全局变量或函数的声明(但不是 main() )?

最佳答案

在最简单和最抽象的层面上:

.c 文件应包含实现您的功能的代码。

.h 文件应该包含代码的“接口(interface)”。

.h 文件包含其他代码使用 .c 文件中的代码所需的所有内容。

例如,如果您有一个将两个整数相加的函数,它可能如下所示:

// in the .c file: the actual implementation of the function
int add_two_integers(int a, int b)
{
return a + b;
}

// in the .h file: just the interface
int add_two_integers(int a, int b);

.h 文件包含一些代码为了使用.c 文件中的函数而需要知道的所有内容。在这种情况下,只有一个函数,.h 文件包含它的名称和与其关联的所有类型信息。

另一种思考方式:.h 文件包含一个“ promise ”,即有一个名为 add_two_integers() 的函数可供您使用,它告诉如何使用它。 .c 文件中的代码可能会被编译为一个库文件,而 C 编译器不会查看库文件内部并找出其中的内容。您可以使用 .h 文件告诉 C 编译器期望什么。

在某种意义上,.c 文件中的内容与.h 文件中的内容之间的区别是实现细节。可以制作一个扫描 .c 文件两次的系统,一次编译它,一次提取接口(interface)信息。但在 C 中,将两者分开是你的工作。

可能进入 .h 文件的其他内容:预定义常量、自定义数据类型、宏和内联函数。宏和内联函数在逻辑上是代码,因此理想情况下应该在 .c 文件中,但如上所述,这不是 C 中实现的方式。编译器需要了解宏和内联函数,所以如果你想分享它们,你可以在 .h 文件中分享它们。

关于c - code.c 和 code.h 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212395/

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