首页 > 解决方案 > c ++标头之间的特殊性

问题描述

(something.h、Csomething 和 something )之间有什么区别?

我已经搜索了互联网,但我无法理解,哪些是库,哪些标头,哪些是预处理器的指令?。

我来自python并且总是调用模块的方法或类,使用的语法:

name_modulo.class () or name_modulo.method ()

在c++中不需要调用模块的名称(指令,或者头文件,我真的不知道),只有需要的类或方法会被直接调用。

为什么会这样?

标签: c++

解决方案


在 C/C++ 中,“编译单元”可能包含 C 源代码(.c 文件)、C++ 源代码(.cpp 文件)或要在编译时合并的声明(.h“头”文件)。

Python 中的等价物是“模块”(.py 文件)。

详细说明:

https://www.cs.auckland.ac.nz/references/unix/digital/AQTLTBTE/DOCU_015.HTM

编译单元是被编译并视为一个逻辑单元的 C 源代码。编译单元通常是一个或多个完整文件,但也可以是文件的选定部分,例如,如果使用#ifdef 预处理器指令来选择特定的代码段。编译单元中的声明和定义决定了函数和数据对象的范围。

使用#include 预处理器指令包含的文件成为编译单元的一部分。由于条件包含预处理器指令而跳过的源代码行不包含在编译单元中。

编译单元对于确定标识符的范围以及确定标识符与其他内部和外部标识符的链接非常重要。第 2.3 节讨论范围。第 2.8 节讨论了链接。

一个编译单元可以通过以下方式引用其他编译单元中的数据或函数:

一个编译单元中的函数可以调用不同编译单元中的函数。可以为数据对象分配外部链接,以便其他编译单元可以访问它们(参见第 2.8 节)。由多个编译单元组成的程序可以单独编译,然后链接生成可执行程序。一个合法的 C 编译单元至少包含一个外部声明,如第 4.3 节中所定义。


推荐阅读