gpt4 book ai didi

c++ - 为什么必须在开始时包含 stdafx.h?

转载 作者:行者123 更新时间:2023-11-28 00:17:35 28 4
gpt4 key购买 nike

我有这个极其简单的主函数

#include "stdafx.h"
#include "abc.h"

int _tmain(int argc, _TCHAR* argv[])
{
abc obj;
obj.show();
return 0;
}

一切都在正常编译......但是当我写的时候

#include "abc.h" 
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
abc obj;
obj.show();
return 0;
}

编译器出了问题..

error C2065: 'abc' : 未声明的标识符

错误 C2146:语法错误:缺少“;”在标识符 'obj' 之前

error C2065: 'obj': 未声明的标识符

错误 C2228:'.show' 的左边必须有类/结构/union

类型是“未知类型”

为什么必须包含

stdafx.h

一开始?我是 C++ 的新手……也许我犯了一个愚蠢的错误。请帮助:(

(使用:VS2005 和 C++ 98)

最佳答案

您看到的问题是 MS Visual C++ 使用名为 precompiled headers 的功能默认情况下(其他平台上的其他编译器具有类似的功能,我记得 GCC 例如具有此功能)。这确保了预编译头之前引用的所有代码都是预编译的,因此编译器在编译时要做的工作更少。

当你切换它时发生的事情是它假定“abc.h”的内容已经被预编译,而实际上它们并没有。一个简单的解决方案是将 #include "abc.h" 放在 stdafx.h 中。参见 here有关 stdafx.h header 如何工作的更多详细说明。

可以在编译器选项中轻松关闭预编译头选项。选项中应该有一个“预编译头文件/预编译”类别,在我遇到的早期 Visual C++ IDE 中。

关于c++ - 为什么必须在开始时包含 stdafx.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29297922/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com