c++:#include和不同的文件类型
c++: #include and different file types
不知何故,我无法理解这个想法,阅读文档对我没有帮助。
我的问题是:
- 当我包含一个头文件#include"general.h",并且在我的项目目录中有两个文件general.h和general.cpp时,这是否意味着预编译器会自动找到.cpp文件
- 我可以包括没有扩展名的文件吗:#include"general">
- 我可以包含一个没有任何头文件的文件吗:#include"general.cpp">
- 我可以包含一个txt文件:#include"general.txt"吗
我在Visual Studio 2010中尝试过这一切。至少没有语法错误。但我想解释一下。所以,我希望你能友善地帮助我。
标准和编译器并不真正关心文件是.cpp
、.h
还是.monkeyface
。将源代码结构化为实现和头文件背后的概念实际上是帮助管理源代码的公认方法。尽管如此,不以公认的方式构建源代码通常被认为是不正确或糟糕的C++。
#include
所做的只是告诉预处理器将您指定的文件的内容包含在当前文件中。这就像将另一个文件复制粘贴到您的文件中。当你说#include "foo.h"
时,它只包括foo.h
的内容,根本不关心foo.cpp
——它甚至不知道它的存在(也没有理由必须存在(。
在实现和头文件中构造源代码非常有用——它避免了依赖项和多个定义的问题,也在一定程度上缩短了编译时间。当您的代码使用另一个类时,您只需要#include
该类的头文件。原因是你的代码不需要关心类的实现,它只需要知道它是什么样子(它的名称、成员、基类等(。它不关心成员函数是如何实现的。
扩展CCD_ 9和CCD_。有些人更喜欢将.hpp
用于头文件。有些人甚至将.tpp
用于模板实现。您可以随意命名它们——是的,您甚至可以包含一个.txt
文件。您的编译器可能会试图从文件扩展名推断有关文件的信息(例如,将其编译为哪种语言(,但这通常是不可接受的。
那么,如果您的main.cpp
包括foo.h
,因为它使用了类foo
,那么foo.cpp
在什么时候参与进来?嗯,在main.cpp
的编译中,它根本没有参与其中。main.cpp
不需要知道类的实现,正如我们上面讨论的那样。但是,在编译整个程序时,您将把每个.cpp
文件传递给编译器,以便单独编译。也就是说,你会做一些类似g++ main.cpp foo.cpp
的事情。当foo.cpp
被编译时,它将包括它需要编译的头。
编译完每个.cpp
文件(包括它们所依赖的头(后,它们就会链接在一起。在此阶段,main.cpp
中成员函数foo::bar()
的使用将与foo.cpp
中给出的foo::bar()
的实现相关联。
#include
指令告诉预处理器读取文件。仅此而已。
预处理器在遇到#include指令时,只需插入给定文件的全部内容。
-
不,预编译器对.cpp文件一无所知
-
是,如果文件没有扩展名
-
您可以包含任何需要的文件。这并不意味着你会从中得到任何有用的东西
-
参见第3点。在上面
#include
是一个简单的"在此处插入给定文件的内容"机制,因此预处理器将完全包括您指定的文件。如果包含.h文件,则预处理器和编译器都不会知道相应的.cpp文件——每个.cpp文件都是单独编译的(.h文件的目的是通知编译器当前.cpp文件之外存在哪些函数(。编译后,链接器被调用,只有这样,不同.cpp文件的编译结果才会组合在一起。
- 通过C++从目录中过滤特定文件类型
- Ini 文件类型名称 预期C++
- 用于随机数据访问的最有效文件类型
- Visual Studio 2019 - 设置文件类型的默认扩展名
- 如何使用C++将.trc文件类型转换为文本文件?
- 如何指定可以打开的文件类型
- 更改代码::块上的默认保存文件类型
- 使用文件对话框选择包含特定文件类型的文件夹?
- MFC,查找特定文件类型
- 搜索并限制为特定文件类型VS2017
- 是否可以将Visual Studio 2017将C 代码编译到EXE以外的文件类型中
- VIM:执行复杂文件类型的脚本和显示结果
- 功能"fread()"不读取特定文件类型?
- 如何在用户修改后使用旧版驱动程序中的 PE 标头获取原始文件类型
- 在makefile中更改构建规则以构建多种文件类型
- 使QT/C 程序显示其文件类型,如Windows上已知
- 是否可以将其他文件类型添加到Visual Studios清理过程中
- 强制将特定文件编译为Objective-C/文件类型,但将整个项目编译为Objective C++
- 如何从FindFirstFile()中获取多个文件类型是可能的吗
- 跨平台方式获取用户友好的文件类型描述