头文件是必要的吗?

11 浏览
0 Comments

头文件是必要的吗?

可能是重复问题:

为什么在C++中需要头文件和cpp文件?

作为一个来自C#背景的人,我发现头文件真的很烦人。即使在C++11中,它们仍然是必需的吗?

0
0 Comments

头文件是必需的。假设你想要开发一个DLL或SO(动态链接库或共享对象),开发人员应该如何知道这个库提供了哪些函数?他需要API的原型,以便包含在自定义项目中。这样一来,声明和实现就被分开了。你声明哪些函数是可用的,但你可以随时更改内部代码。

根据你的说法,如果我们假设OP并不是在谈论一个DLL/SO,而是一个经常更新和重构的终端程序,那么编译器是否会强制使用头文件,每次签名更改或成员添加时都必须编辑两个文件呢?

0
0 Comments

头文件的存在是因为C语言的基础。你可以自己回答这个问题:不使用头文件并尝试在没有它们的情况下进行编译。如果不能编译,那么编译器仍然需要它们。

我并不是说这是个说辞。如果语言规范仍然要求使用头文件,并且编译器符合规范,那么要进行改变将是一项巨大的工作。而且关于这个问题的辩论将会持续很长时间。这听起来像是一个只用于发泄和辩论而没有真正结局的问题。

不使用头文件也可以编写和编译完整的应用程序。标准中没有强制使用任何头文件。(当然这不是真实的代码,只适用于非常简单的测试等);-)

C++标准为标准库定义了头文件。没有强制使用它们,但是如果你想使用标准库,就必须使用这些头文件。

是的,我可以写一些简单的测试程序而不使用它们。我没有说其他的(当然,一些编译器可能会使用某种形式的“内置头文件”来代替标准头文件,它们可能不是“头文件”,但是现在我们变得太过哲学了,我只是想评论一下这个回答,它暗示你没有头文件就无法编译,有很多事情你没有包含这些文件就做不到,但还是有一些没有头文件的选项留下)

你能写一些非平凡的程序而不使用它们吗?“Hello world”并不能证明什么。

当然,我同意你可以在没有头文件的情况下做很多事情。但是模板是C++和标准库的重要组成部分,我无法想出一种简单的方法来为客户端代码提供模板而不使用头文件或包含文件。

肯定有更好的方法……编写头文件只是愚蠢。

C语言是在Unix发明的。不管你的观点如何,它不会改变。

0
0 Comments

C++需要头文件(以及库文件),就像C#需要引用程序集一样。

在C++中,头文件是一种用于声明函数、类、变量和其他程序实体的文件。它们通常包含在源代码文件中,并在编译时被预处理器引用。头文件的主要目的是提供对程序的声明的访问,以便在其他源代码文件中使用它们。因此,头文件在C++中被认为是必需的。

头文件的出现有以下原因:

1. 分离接口和实现:头文件提供了一个接口,用于描述类、函数和变量的声明。通过将这些声明放在头文件中,可以将接口与实现分开。这样,其他源代码文件只需要包含头文件,而无需关心具体实现的细节。

2. 提高代码的可维护性:通过使用头文件,可以将代码模块化,使其更易于管理和维护。头文件可以包含在多个源代码文件中,这样可以避免重复编写相同的声明。

3. 便于重用代码:头文件可以在不同的项目中重用。通过将常用的函数、类和变量的声明放在头文件中,可以在多个项目中共享代码。

解决方法:

1. 使用预处理指令:在源代码文件中使用预处理指令#include来引用头文件。

2. 声明和定义的分离:将函数、类和变量的声明放在头文件中,而将具体实现放在源代码文件中。

3. 使用头文件保护宏:为了防止头文件被重复包含,可以在头文件中使用头文件保护宏。这样可以确保每个源代码文件只包含一次头文件。

总之,头文件在C++中是必需的,它们提供了代码的接口和声明,分离了接口和实现,提高了代码的可维护性和重用性。通过使用预处理指令和头文件保护宏,可以有效地管理和引用头文件。

0