C++ 我如何理解cpp头文件
为什么main.cpp的头文件只需要包含C++ 我如何理解cpp头文件,c++,compilation,C++,Compilation,为什么main.cpp的头文件只需要包含.h头文件只包含声明而不包含实现 我可以在包含声明和实现的cpp文件中编写一个类,然后将该cpp文件作为头文件包含到main.cpp中吗 如何包含不在此项目中的头文件 UL> 技术上,头文件(或您决定的任何其他文件包含)可以包含任何一个整体,作为一个完整的C++程序。p> 当编译器(从技术上讲,是编译器包中称为“C预处理器”的一部分)看到源代码中有一个#include“somefile.h”时,会发生什么情况?它接受该文件,并将其“粘贴”到正在编译的主文
.h
头文件只包含声明而不包含实现
<> UL>
技术上,头文件(或您决定的任何其他文件<代码>包含)可以包含任何一个整体,作为一个完整的C++程序。p> 当编译器(从技术上讲,是编译器包中称为“C预处理器”的一部分)看到源代码中有一个
#include“somefile.h”
时,会发生什么情况?它接受该文件,并将其“粘贴”到正在编译的主文件中。因此,您可以“假装”是预处理器,方法是打开headerfile,标记all,然后将其粘贴到主文件中
文件头的要点主要是避免将C++中的同一个位复制和粘贴到多个源文件中。因此,例如,可以将类的声明放入头文件
myclass.h
,将实际实现放入myclass.cpp
文件,然后使用myclass
的程序的另一部分只需要包含头文件
不属于项目的头文件通常用尖括号括起来,
#include
将包含来自其他项目的“Header.h”。头文件非常简单。他们所做的只是从.h文件中粘贴一份代码副本来代替#include
C/C++需要知道对象的大小或参数的类型和计数,但不需要知道实现。自由函数的默认链接始终为extern。因此,通过编写int myFunc()
您实际上正在编写extern int myFunc()
。只要该函数在不同的编译单元(编译的cpp文件)中实现,就可以正常工作
是的,您可以#包括cpp文件,但如果您实际编译了“header.cpp”和“main.cpp”,您将在链接时遇到多定义问题。只需将.cpp文件从make文件或项目中删除即可。许多库使用