Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/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++ MS Visual Studio项目头文件_C++_C_Visual Studio 2008_Compiler Construction_Include - Fatal编程技术网

C++ MS Visual Studio项目头文件

C++ MS Visual Studio项目头文件,c++,c,visual-studio-2008,compiler-construction,include,C++,C,Visual Studio 2008,Compiler Construction,Include,我对在MSV中开发C/C++代码相当陌生,但我一直困惑的一件事是,为什么在我的项目中添加了一组源文件和头文件,使它们分别显示在MSV文件夹“源文件”和“头文件”下,我随后是否必须告诉编译器头文件在“Project->properties->C/C++->General”下的位置。在我看来,MSV应该已经尝试通过首先查看我在项目中包含的头文件集来解析任何“include”…”语句 有人想评论一下这里使用的逻辑吗 谢谢, Travis实际上,在所谓的“头文件”文件夹中添加头文件是可选的。即使不这样做

我对在MSV中开发C/C++代码相当陌生,但我一直困惑的一件事是,为什么在我的项目中添加了一组源文件和头文件,使它们分别显示在MSV文件夹“源文件”和“头文件”下,我随后是否必须告诉编译器头文件在“Project->properties->C/C++->General”下的位置。在我看来,MSV应该已经尝试通过首先查看我在项目中包含的头文件集来解析任何“include”…”语句

有人想评论一下这里使用的逻辑吗

谢谢,
Travis

实际上,在所谓的“头文件”文件夹中添加头文件是可选的。即使不这样做,您也可以在“项目->属性->..”中指定标题路径,它仍然可以工作

您可能只考虑可以添加到“头文件”文件夹中的项目头文件,如果一个大型项目有多个第三方库,您肯定无法继续将每个头文件添加到您的文件夹中

因此,为了在一个配置中保持所有include的统一,应该选择这种方式


以上所引用的内容只是我的理解。我没有任何证据支持这一点。所以,我提前道歉这是错误的。请不要用反对票轰炸我。:)

头文件的查找必须是确定性的。项目中可以有多个同名文件。在这种情况下,您希望编译器如何解决这种混淆

另一件事是,拥有查找头文件的目录是(几乎?)所有编译器的一个历史特性


这使得您在VisualStudio项目中只能使用头文件:能够从VisualStudio轻松地打开它们。就这样

首先,您是否创建了一个新的C/C++项目?如果是这样,它应该在您选择的位置创建一个目录。完成后,您可以右键单击项目(在MSVS的“解决方案”窗口中),并将新文件添加到项目中。例如,可以将源文件(.cpp)和头文件(.h)添加到项目中。完成后,您必须在源文件中写入#include“yourfile.h”,以便能够将头文件包含到源文件中。请注意,您可以添加新文件和现有文件。我希望这有帮助

IDE使用项目文件跟踪您的文件,但编译器无权访问该信息。编译时,include文件路径会传递给每个源文件。

我认为这是因为在目录中有一个头并不一定意味着要在该目录中搜索任何其他头。该特定头可以通过指定头的路径来包含,也可以隐式找到,因为它与包含它的文件位于同一目录中


尽管如此(这只是猜测),我认为你想要的是一个合理的要求(这是一件以前让我有点沮丧的事情)——至少作为一种选择或被要求

我从未见过这个问题。一旦您创建了一个项目并在IDE中将任何相同的项目文件夹头文件添加到您的项目中,您可以通过#包含并编译您的源代码来添加头文件。
如果所需的头文件不存在于您创建项目的同一文件夹中,您应该在项目属性中添加头目录,如您所说:)

当问题使用短语“告诉编译器”时,从上下文中可以清楚地看出,他在IDE的项目设置中的意思。将IDE称为“编译器”并不少见(严格来说,即使它不精确)。作为一个集成的开发环境,我假设它将把项目文件与编译器集成在一起,这样命令行处理的细节将在很大程度上被抽象出来。我现在明白了IDE在某种程度上比我最初预期的编译器更薄。感谢您的回复。是的,我已经创建了一个C/C++项目,但我是使用“现有代码向导”创建的。我试图获得一个第三方开放源代码库,以便在windows下编译。我的目标是不必更改任何源代码,因为这个代码库已经在Linux和MacOS下编译。因此,我真的不想改变include语句。谢谢你的回复。我不相信你需要更改任何代码。。。如果你创建了一个新的项目,你只需要将现有的文件添加到项目中就行了。正如你所说的,一旦实现了正确的设置,这并不是一个大问题。我之所以提到它,是因为它似乎是IDE实现的一种简单而直观的行为。如果开发人员遇到麻烦,将包含文件添加到项目中,IDE,在我看来,应该考虑它们的任何包含语句。我注意到IDE允许设置子标题文件夹(我认为它称之为“过滤器”),以便模仿源代码所期望的目录结构。如果必须在项目属性中指定完整路径,为什么要这样做?无论如何,谢谢你的回复。谢谢你的回复。虽然我同意你的观点,在VS项目中头文件的唯一用途似乎是为了方便地打开它们,但我认为这可能是一个设计缺陷,或者至少是不直观的。正如我在前面的评论中提到的,如果不提供模拟源代码中确定性包含路径的独立名称空间,我不确定子标题过滤器/文件夹的目的是什么。无论如何,我感谢您帮助我理解VS开发范例。感谢您的回复。我同意大型项目仍然需要“项目->属性”功能。尽管如此,我仍然认为让项目编译器自动重新编译