标题和源文件C 有什么区别?
what is the difference between header and source files C++?
我想知道标题(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
文件。
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 返回常量对象引用 (getter) 和仅返回字符串有什么区别?
- Qt:remove() 和 rmdir() 有什么区别
- 这 4 个 lambda 表达式之间有什么区别?
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- typedef 枚举和枚举类有什么区别?
- &C::c 和 &(C::c) 有什么区别?
- ascii 和 unicode 在处理级别有什么区别吗?
- C 中的常量限定符和 C++ 中的常量限定符有什么区别?
- "ABC" 和 "ABC" ) 在C++中有什么区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 引用捕获和在 lambda 中通过引用发送参数有什么区别 (C++)
- 两种访问I2C总线的方法有什么区别?
- 两种模板示例有什么区别?
- 这两种C++语法之间有什么区别?
- lua 5.0.2 模块和 5.3.5 有什么区别?
- C++中"typedef"、"using"、"namespace"和"using namespace"有什么区别?
- std::enable_if 和 std::enable_if_t 有什么区别?