Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我如何理解cpp头文件_C++_Compilation - Fatal编程技术网

C++ 我如何理解cpp头文件

C++ 我如何理解cpp头文件,c++,compilation,C++,Compilation,为什么main.cpp的头文件只需要包含.h头文件只包含声明而不包含实现 我可以在包含声明和实现的cpp文件中编写一个类,然后将该cpp文件作为头文件包含到main.cpp中吗 如何包含不在此项目中的头文件 UL> 技术上,头文件(或您决定的任何其他文件包含)可以包含任何一个整体,作为一个完整的C++程序。p> 当编译器(从技术上讲,是编译器包中称为“C预处理器”的一部分)看到源代码中有一个#include“somefile.h”时,会发生什么情况?它接受该文件,并将其“粘贴”到正在编译的主文

为什么main.cpp的头文件只需要包含
.h
头文件只包含声明而不包含实现

  • 我可以在包含声明和实现的cpp文件中编写一个类,然后将该cpp文件作为头文件包含到main.cpp中吗

  • 如何包含不在此项目中的头文件


  • <> 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文件或项目中删除即可。许多库使用 Hpp作为对它们的全部实现都在内联的C++头的扩展。标题文件也将在这里解释。以下关于源文件和标题的文章可能会有所帮助(或者没有,问题还不太清楚):