c++ |
您所在的位置:网站首页 › 炉石遇到bug怎么处理 › c++ |
C ++如何处理多个源文件?
时间:2009-11-24 01:05:31
标签: c++ compiler-construction header-files 我正在学习C ++,来自Python的背景,我在理解C ++如何处理多个源文件方面遇到了一些麻烦。在Python中,import语句首先检查您尝试导入的模块的当前工作目录,然后检查sys.path中的目录。在C ++中,我将在哪里放置自定义的.h文件?编译器甚至会在哪里看? 例如,我有一个程序,foo.exe从单个源文件foo.cpp编译,两者都在同一目录中。我决定要把事情组织得更好一些,所以我创建了一个新的.h文件,bar.h并在那里转储东西。我只需要#include来获取我放在那里的东西吗?如果我想将bar.h与另一个程序(在完全不同的目录中)一起使用该怎么办? 6 个答案:答案 0 :(得分:2) 有两种include变体: #include "path-spec" #include引用符号: 此表单指示预处理器在包含#include语句的文件的同一目录中查找包含文件,然后在包含(#include)该文件的任何文件的目录中查找。 括号表示法在某些已定义的位置查找头文件。 使用gcc,您可以通过以下方式获取有关这些广告的一些信息: $ echo | gcc -v -x c++ -E -编译器接受 -I or /I 添加其他路径的选项。 答案 1 :(得分:1) 如果您使用#include ,它(通常)会在包含路径中查找,否则如果您使用#include "../../foo/bar.h"则会使用相对路径。 您在大多数编译器上设置包含-I或/I的路径。有关详细信息,请参阅其手册。 不要在标题中定义任何对象 - 如果你这样做,你会在链接时有多个定义错误(并在多个源文件中包含标题)。 答案 2 :(得分:1) 它以类似的方式工作。 #include仅供编译器使用。在执行时,文件bar.h不会被使用。但在编译时它是。 在编译时,文件可以在两个地方: 1.-当前目录(如python中) 2.-包含路径中配置的目录。配置目录的位置取决于您使用的编译器。其中大多数允许您在编译命令行中定义include目录。大多数IDE允许您在某些“选项”菜单中对其进行配置。 希望它有所帮助。 答案 3 :(得分:1) 如果您的头文件位于同一个目录中,您可以将它们包括在内: #include "bar.h"如果你想从另一个目录中包含这个标题: #include "../foobar/bar.h"基本上引用意味着从当前目录搜索,而#include 中的括号意味着在标准头文件目录中搜索。您可以通过在编译命令中添加-I /path/to/your/custom/headers将自定义目录添加到标准搜索路径。 答案 4 :(得分:0) 带有尖括号的#include在系统包含目录中查找。像这样: #include 使用双引号,它会查看当前目录以及给编译器搜索的其他目录 #include "foo.h" g++ -I../include foo.cpp 答案 5 :(得分:0) 你在python模型中缺少的是链接器。 在python中导入代码并在那里解释它。在c / c ++中,您将每个源文件编译为目标文件。然后,您告诉链接器将一堆目标文件收集到可执行文件中 通常,c / c ++源文件中的包含仅包含其他C文件中的whast(函数名称等)的描述,而不包含函数内容。这足以让编译器编译给定的文件。然后链接器将您的目标文件与“众所周知”的函数库组合在一起并生成可执行文件 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |