致命错误:找不到'stdafx.h'文件
Fatal error: 'stdafx.h' file not found
我是编程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.
谁能告诉我如何解决这个问题?
-
stdafx.h
是Visual Studio使用的预编译头文件,你不需要这个。 - 您似乎漏掉了
int main()
功能 - 为
std::endl
而非std::end1
所以像这样:
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
return 0;
}
stdafx.h
是一个预编译头文件,它是特定于Visual Studio的。预编译头文件是毫无价值的,除非你面临缓慢的编译时间。在你的程序中,你根本不需要它们,所以你可以删除它们,一切都会很好。
你可能会猜测,如果它是不需要的,那么为什么我们包括他们?
我将解释它:每当我们添加头文件(#include
)时,编译器将遍历它,检查它,然后在编译CPP文件时编译头文件。
对于包含头文件的每个CPP文件重复此过程。
如果你在一个项目中有1000个CPP文件,其中必须包含xyz.h头文件,那么编译器将编译xyz.h
文件1000次。这可能需要相当长的时间。
为了避免这种情况,编译器给了我们一个"预编译"头文件的选项,这样它只会被编译一次,以加快编译时间。
两个问题:A) stdafx.h不需要(正如其他人所指出的)。b)'end1'应该是'endl'(注意字母'l'和数字'1')。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 在编辑头文件时,VS Intellisense如何从stdafx.h中查找定义
- 如何避免使用STDAFX和其他标头文件
- 错误 C1083:无法打开源文件:"stdafx.cpp":没有此类文件或目录
- 使用头文件和 StdAfx.h
- Stdafx.h到头文件
- 找不到stdafx.h中包含的头文件
- 错误 C1083:无法打开包含文件:"stdafx.h",但它应该打开?
- 在 cpp 文件中使用 #include "Stdafx.h"
- Matlab 符合文件错误C++:致命错误 C1083:无法打开包含文件:"stdafx.h"
- VS2012预编译头:我的.h文件如何知道包含在stdafx.h
- 致命错误:找不到'stdafx.h'文件
- 错误 C1083:无法打开包含文件:"stdafx.h":VS 2005 中没有此类文件或目录