Visual Studio C++ 能够编译带有编译错误(红色下划线)的代码。

8 浏览
0 Comments

Visual Studio C++ 能够编译带有编译错误(红色下划线)的代码。

我遇到了编译错误(红色下划线)的问题,如下所示:

Error: cannot open source file "stdafx.h"

这是环境的编辑截图:

Able to build with Compile Errors

在左边是我的 Visual Studio 解决方案目录列表,关闭了 "Show All Files"。

我正在进行一个学校项目,每个文件夹是项目不同部分的源文件,由不同的负责人负责。

例如,学生A和B负责AST和PARSER文件夹(我们称之为子项目)。

我们为每个子项目都有一个API,这样其他子项目就知道该调用什么。

在顶部中间,我们有一个用于类QueryProcessor的源文件(只是前几行)。

下面是Build Success的输出。

红线遍布在所有的类上,主要是因为环境无法打开#include "stdafx.h"

在右边,那是stdafx.h,我们在其中包含了所有不同的子项目,这样每个项目都不需要有一个不同的stdafx.h。

然而,我能够构建项目。我相当确定我在设置目录/链接时弄错了。

0
0 Comments

问题的原因是:

1. 在VC中同时使用文件夹和虚拟文件夹会导致混乱,虚拟文件夹表示所有文件都在一个目录中,而在硬盘上创建的文件夹则表示所有文件在不同的目录中。如果不清楚情况的话,最好不要同时使用它们。

2. 对于stdafx.h的作用可能有误解,stdafx.h的目的并不是将所有的头文件都放在其中,然后在所有其他文件中都包含它。可以参考这个Stack Overflow的问题:Purpose of stdafx.h

3. 清理stdafx.h文件后,将尽可能多的头文件包含到.cpp文件中,只有在头文件中需要的情况下才将这些包含项放入头文件中。

4. 打开“显示所有文件”选项,现在你将使用实际的文件夹,可以确保如果你引用一个名为“PKB”的文件夹,那么这个文件夹确实存在,因为你可以在左侧的解决方案资源管理器中看到它。

5. 如果你使用了using namespace std;这样的语句,请确保也包含所需的头文件。你可能会认为“嘿,我已经在另一个头文件中包含了iostream,现在我在这个头文件中包含了那个头文件,所以我不需要再次包含它”,但是在处理较大的项目时,这样做会导致问题。

解决方法是:

当你切换到“显示所有文件”时,你会意识到stdafx位于与使用该包含项的文件不同的文件中。可能需要类似于#include "..\stdafx.h"这样的语句(取决于你的结构)。

我认为这是显而易见的,如果包含一个头文件,那么这个包含项是相对于包含其他头文件的文件的。

0
0 Comments

原因:Visual Studio C++可以编译带有编译错误的代码,但会在出现错误时以红色的下划线标记出来。导致这个问题的原因是使用了stdafx.h文件来创建预编译头文件。预编译头文件是一种编译时的优化方式,它可以避免编译器为每个编译单元都重新编译这些头文件。但是如果这些头文件发生了变化,就需要进行完全的系统重建。因此,最好只在stdafx.h文件中包含标准头文件和第三方头文件,这些头文件通常不会被修改。有时,可以将自己的库文件也包含在内。

解决方法:每个项目(即构建为单独单元(DLL或.exe)的项目的每个部分)应该有自己的预编译头文件和自己的stdafx.h版本。项目应该只包含自己的stdafx.h文件,而不包含其他项目的文件。因此,可以使用该头文件来定义dllexport宏。在组织项目头文件时,应该注意以下几点:1. 哪些头文件是外部包含的;2. 哪些头文件只在内部使用,甚至不会被外部间接包含。后者应该包含您的stdafx.h文件,并且最好不要与从项目外部包含的头文件放在同一个目录中。

0
0 Comments

Visual Studio C++出现能够编译带有编译错误的问题(红色下划线)的原因是缺少头文件的路径。解决这个问题的方法如下:

1. 鼠标右键点击解决方案文件。

2. 点击“在Windows资源管理器中打开”。

3. 在资源管理器中找到stdfx.h文件,并复制文件夹的路径。

4. 在Visual Studio的解决方案资源管理器中,鼠标右键点击项目文件。

5. 点击“属性”-> “C/C++” -> “常规”。

6. 在“附加包含目录”中粘贴路径。

0