我是编程C ++的新手,我正在尝试通过网站(learncpp.com)学习自己,虽然我已经坚持编译我的第一个程序=(。他们使用Visual Studio编写代码,因为我使用的是macbook ,我只是使用vi和终端(或者我应该使用别的东西?)
这是我根据教程编写的helloworld.cpp程序:
#include "stdafx.h"
#include <iostream>
{
std::cout <<"Hello World!" <<std::end1;
return 0;
}
当我编译(gcc -Wall hello.cpp)时,我收到错误:
helloworld.cpp:1:10: fatal error: 'stdafx.h' file not found
#include "stdafx.h"
^
1 error generated.
有谁能让我了解如何解决这个问题?
答案 0 :(得分:9)
stdafx.h
是visual studio使用的预编译头,你不需要这个。int main()
功能std::endl
不是std::end1
这样的事情:
#include <iostream>
int main() {
std::cout <<"Hello World!" <<std::endl;
return 0;
}
答案 1 :(得分:1)
两个问题: a)不需要stdafx.h(如其他人所述)。 b)'end1'应为'endl'(注意字母'l'与数字'1')。
答案 2 :(得分:1)
stdafx.h
是一个预编译的头文件,它特定于Visual Studio。
除非您面临缓慢的编译时间,否则预编译的头文件将毫无用处。在您的程序中,根本不需要它们,因此您可以删除它们,一切都会很好。
您可能正在猜测是否不需要它,为什么我们要包含它们?
我将解释:
每当我们添加头文件(#include
)时,编译器都会遍历它,检查它,然后在编译CPP文件时编译头文件。
对每个包含头文件的CPP文件重复此过程。
如果项目中有1000个CPP文件(其中必须包含xyz.h头文件),则编译器将编译xyz.h
文件1000次。可能需要花费一些时间。
为避免该编译器为我们提供了“预编译”头文件的选项,因此该文件只会被编译一次,以加快编译时间。