致命错误:未找到“stdafx.h”文件

13

我是新手学习C ++编程,尝试通过网站(learncpp.com)自学,但我已经卡在了编译我的第一个程序上=(。他们使用Visual Studio来编写他们的代码,因为我正在使用MacBook,所以我只使用vi和终端(或者我应该使用其他工具)

这是我根据教程编写的helloworld.cpp程序:

#include "stdafx.h"
#include <iostream>
{
     std::cout <<"Hello World!" <<std::end1;
     return 0;
}

当我编译(hello.cpp)时,出现了以下错误:

helloworld.cpp:1:10: fatal error: 'stdafx.h' file not found

#include "stdafx.h"
         ^
1 error generated.

有人可以给我提供解决这个问题的见解吗?


3
你尝试过,你知道的,删除出现错误的那一行吗? - this
1
删除#include "stdafx.h" - haccks
3
不需要那个文件,直接删除它即可。这是为了特定于Visual Studio的“预编译头”而创建的,这是一个稍后您将学习的概念。欢迎来到SO! - OMGtechy
12
如果您教初学者删除导致问题的每一行代码,这并不是一个好建议,因为他们最终会得到一个空白文档。 - Blue Ice
1
@Jackie 使用 endl(E-N-D-L),而不是 end1(E-N-D-one) - Blue Ice
显示剩余5条评论
3个回答

14
  1. stdafx.h是Visual Studio使用的预编译头文件,您不需要它。
  2. 您好像漏掉了int main()函数。
  3. 应该是std::endl而不是std::end1

因此,类似这样:

#include <iostream>
int main() {
     std::cout << "Hello World!" << std::endl;
     return 0;
}

7

stdafx.h是一个预编译头文件,它只适用于Visual Studio。 除非编译时间很慢,否则预编译头文件是没有意义的。在您的程序中,您根本不需要它们,因此可以将其删除,一切都会很好。

您可能会猜测为什么还要包含它们呢?

我来解释一下: 每当我们添加头文件(#include),编译器就会遍历它,检查它,然后在编译CPP文件时编译头文件。

这个过程对于每个包含头文件的CPP文件都会重复进行。

如果您有1000个CPP文件,其中包含名为xyz.h的头文件,则编译器将编译xyz.h文件1000次,这可能需要相当长的时间。

为了避免这种情况,编译器提供了“预编译”头文件的选项,以便只编译一次以加快编译时间。


1

两个问题: a)不需要stdafx.h(正如其他人指出的那样)。 b)'end1' 应该是 'endl'(注意字母'l'和数字'1'的区别)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接