标题和源文件C 有什么区别?

what is the difference between header and source files C++?

本文关键字:什么 区别 源文件 标题      更新时间:2023-10-16

我想知道标题(H)和源(CPP)文件之间的区别。我们通常使用标题进行声明和CPP s来定义非模板的内容,以及2个不同的标题用于声明和使用模板定义。汇编甚至关心文件是CPP还是H?他做的唯一的事情是将一个文件复制到另一个文件,包括指令?文本正在复制哪种文件中是否重要?

当您包含标头文件时,它将在编译时间内衬里,这意味着它可能必须在其中包含C 内容(除非整个文件要注释)。从这个角度来看,.h.cpp文件都相同,因为它们都包含C 代码。

但是,最佳实践规定.h文件用于模板和类定义,而.cpp文件用于实现和源代码。尽管可能有可能,但混合两者的使用是不好的。

这不是一个完整的答案,但我提供了一些指示。严格来说,C/C 语言(或其预处理程序)大部分不在乎 - 标题文件还有更多的程序员。

也就是说,C/C 标准确实指定了标准库标题的存在(不过不是完全"标题文件"),例如<iostream><cstdio>

两种语言都坚定的是"翻译单元"的概念,这是一个或多个汇编单元,后来将其链接到最终程序中。在C 中,还有一个定义规则,它会影响您可以在标题文件中放置的内容而不是.cpp文件,而不会在程序中重复。

我遇到以下情况。假设您有两个源文件。

file1.cpp具有main(),并且File2.CPP具有一些辅助功能x()y()。File1.cpp对x()y()的声明将编译,并且程序将运行。如果您在file2.h而不是file2.cpp中定义了函数,而您没有#include "file2.h",则会有编译时间错误undefiend reference to x(),y()。对于.h中的声明,如果同一文件中没有定义,则编译器将在.cpp文件中查找定义,而不是.h文件。