在 Visual Studio 中使用 C++ 类 - 未声明的标识符错误 [重复]
Posted
技术标签:
【中文标题】在 Visual Studio 中使用 C++ 类 - 未声明的标识符错误 [重复]【英文标题】:Using a C++ Class in Visual Studio - undeclared identifier error [duplicate] 【发布时间】:2017-12-20 17:11:31 【问题描述】:我希望这非常简单,但我终其一生都无法找出问题所在。我是 C++ 新手,我在 Visual Studio 中创建了一个 C++ 类,并试图在另一个文件的主要方法中使用它。我已经将所有东西都剥离到最低限度,但我仍然无法让它运行。我得到的第一个编译错误是“测试”:未声明的标识符。如果我删除“测试测试;”从 App.cpp 一切都编译得很好。 下面是代码。有人可以帮忙吗?
App.cpp:
#include "Test.h"
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
int main()
Test test;
//cout << test.getNumber() << endl;
return 0;
测试.h:
#pragma once
class Test
private:
int number;
public:
int getNumber();
Test();
~Test();
;
Test.cpp:
#include "stdafx.h"
#include "Test.h"
int Test::getNumber()
return number;
Test::Test()
this->number = 1;
Test::~Test()
【问题讨论】:
将此包含 #include "Test.h" 放在此 #include "stdafx.h" 之后 Visual Studio 在#include "stdafx.h"
之前不会编译任何东西,如果使用预编译头文件。
问题在于 VS 默认使用 Visual C++ 的“预编译头文件”功能,这使得预处理器以非标准方式运行。正如@VladfromMoscow 所指出的,一个修复方法是让预编译的标头(此处为"stdafx.h"
)成为每个实现文件中的第一个包含。更好的解决方案是在项目设置中关闭预编译头文件。右键单击项目→属性→将其关闭。在那里。
真的吗?就是这样......好吧,我确实说过它一定很简单。谢谢
【参考方案1】:
问题是"stdafx.h"
是预编译的。
Visual c++ 不会编译源文件中#include "stdafx.h"
之前的任何内容,除非未选中编译选项/Yu'stdafx.h'
(默认情况下);它假定源代码中直到并包括该行的所有代码都已编译。
解决办法是把它移到第一个include
。
您可以在Precompiled header 的 wiki 页面中阅读更多相关信息。
【讨论】:
以上是关于在 Visual Studio 中使用 C++ 类 - 未声明的标识符错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中通过 C# 类编译 C++ 代码
哪些编译器选项用于在 Visual Studio 中编译 C++ STL 类/函数?