gpt4 book ai didi

c++ - 每个 C 或 C++ 文件都应该有一个关联的头文件吗?

转载 作者:IT老高 更新时间:2023-10-28 21:34:43 27 4
gpt4 key购买 nike

每个 .C 或 .cpp 文件都应该有一个头 (.h) 文件吗?

假设有以下 C 文件:

  1. Main.C

  2. Func1.C

  3. Func2.C

  4. Func3.C

其中 main() 在 Main.C 文件中。应该有四个头文件

  1. Main.h

  2. Func1.h

  3. Func2.h

  4. Func3.h

或者所有 .C 文件都应该只有一个头文件?

什么是更好的方法?

最佳答案

首先,有一个 main.h 是不寻常的,因为在编译时通常不需要向其他编译单元公开任何内容。 main() 函数本身 需要为链接器或启动代码公开,但它们不使用头文件。

您可以为每个 C 文件拥有一个头文件,或者在我看来,更可能的是,为相关的 C 文件创建一个头文件。

其中一个例子是,如果您有一个 BTree 实现,并且您已将添加、删除、搜索等放在它们自己的 C 文件中,以最大限度地减少代码更改时的重新编译。

在这种情况下,每个 C 文件都有单独的头文件是没有意义的,因为头文件是 API。换句话说,它是用户看到的图书馆的 View 。使用您的代码的人通常不太关心您如何构建源代码,他们只是希望能够编写尽可能少的代码来使用它。

强制他们包含多个不同的头文件,以便他们可以创建、插入、删除和搜索一棵树,这可能会让他们质疑你的理智:-)

one btree.h 文件和包含所有 BTree 对象文件的单个 btree.lib 文件会更好是从单独的 C 文件构建的。


另一个例子可以在标准 C 头文件中找到。

我们不确定是否有用于所有 stdio.h 函数的多个 C 文件(我会这样做,但这不是唯一的方法)但是,即使有是,就 API 而言,它们被视为一个单元。

您不必包含 stdio_printf.hstdio_fgets.h 等等 - 有一个单独的 stdio.h C 运行时库的标准 I/O 部分。

关于c++ - 每个 C 或 C++ 文件都应该有一个关联的头文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/608631/

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