不在 UI 中的 Visual Studio 构建错误

Posted

技术标签:

【中文标题】不在 UI 中的 Visual Studio 构建错误【英文标题】:Visual Studio Build Errors not in UI 【发布时间】:2018-01-27 22:46:16 【问题描述】:

Visual Studio 一直在为我为课堂制作的“编译器”提供奇怪的构建错误。它告诉我 .cpp 函数“不是其 [标头中的母函数] 的成员”,声明的标头函数的“未知覆盖说明符”,说某些函数不采用 [this] 数量的参数......等等奇怪的是,虽然它指向某些行,但 任何地方 都没有错误标记。没有任何颜色的波浪线。无论用户界面如何,语法似乎都是正确的。所有错误都是构建错误——Intellisense 没有。

我唯一的猜测可能是#include 或继承问题,所以我给出我的代码组织是为了给你一个想法(向你展示代码本身是无用的,因为 UI 没有显示语法错误)。

如果这意味着什么,我已经在 Linux 和 Windows 之间传输了文本文件(我目前正在使用它)。供您参考,我已尝试清除项目缓存,重新构建和重新启动项目,甚至复制到新项目而错误没有变化。这是今年以来VS2017的最新更新。我的猜测是关于包含的内容,但如果不是,VS 似乎是罪魁祸首。但是让我知道可能性。

main.cpp:

//#pragma once
#include "DatalogProgram.h"
#include "Scanner.h"
#include <iostream>

using namespace std;


int main() 
    string filepath = "";
    Scanner sc;

    DatalogProgram parser;

    system("pause");
    return 0;

扫描仪.h:

#pragma once
#include "Token.h"
#include <fstream>
#include <vector>

class Scanner ;

DatalogProgram.h:

#pragma once
#include "Scanner.h"

class DatalogProgram ;

令牌.h:

#pragma once
#include <string>

enum Toktype ;

class Token ;

【问题讨论】:

您的 main.cpp 文件中不需要任何 #pragma once... 取点并编辑。但这并没有改变我的问题...... WFM (Visual Studio 2017 15.5.4),必须是您未显示的代码/设置的一部分。 我会展示代码,但我不知道它有多大帮助。例如,bool Scanner::scan(string filename) 得到一个错误:“在 Scanner 中找不到重载的成员函数”,即使 bool scan(string filename) 在 Scanner.h 中。我不知道展示什么会有所帮助...括号也可以正确关闭类/函数。 这听起来可能是一个循环包含问题(a.h 包括b.hb.h 包括a.h)。 【参考方案1】:

找到了问题——是的,它在我的代码中。我没有在字符串和 fstream 引用之前执行“std::”,这引发了所有“无法识别”的问题。一旦我这样做并重新调整#include 链,它就可以完美运行。如果我展示一些代码,你们可能会更快地掌握它。

【讨论】:

以上是关于不在 UI 中的 Visual Studio 构建错误的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio测试运行:从测试中心的测试计划运行编码的UI自动化测试

用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

Visual Studio 2013 数据库项目 - DROP 目标中的对象但不在项目中

默认情况下,Visual Studio 2015 数据库项目是不是会删除不在项目中的存储过程?

C++ 中的 Visual Studio MFC:为啥“int”有效但“double”无效?

使用 Visual Studio 2017 构建 open62541 DLL