c语言c1010错误解决不了,“fatal error C1010”错误解决的三种方法

尝试写了一个简单的类文件,但在编译的时候提示错误,具体错误信息如下:

fatal error C1010: unexpected end of file while looking for precompiled header directive

从网上搜到了一些解决办法,具体办法如下 :

1、在类的实现cpp文件的头部第一行加上“#include "stdafx.h"”。

2、关闭预编译头文件选项。具体步骤如下:

Project Settings(Alt+F7) -> C/C++选项卡 -> Category组合框Precompiled Headers -> Not Using Precompiled headers

3、创建空工程,然后将关键代码文件移动到工程目录 。如下图。

b11609be499153f830898bda0f7ab170.png

问题原因分析 :

首先看一下错误提示,错误信息说的是:查找预编译头文件失败。那么什么又是预编译头文件呢?

所谓预编译头文件,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。编译器通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include   "stdafx.h"前的代码都是预编译的,它跳过#include   "stdafx.   h"指令,使用projectname.pch编译这条指令之后的所有代码。因此,需要进行预编译头文件的工程的所有CPP实现文件第一条语句都必须是:#include  "stdafx.h"。如果工程不需要进行预编译头文件则不需要加该语句。

问题解决思路:

解决办法1就是这么处理的;解决方案2是关闭了工程的预编译头文件选项,所以也可以;解决方案3和解决方案2类似,但更彻底,通过创建一个空的工程直接创建了一个不需要预编译头文件的工程。

解决方案2的代码示例:

test.cpp的代码:

1 //instructfile.cpp : Defines the entry point for the console application.2 //3 #include "stdafx.h"

4 #include "myfile.h"

5 #include

6

7 int main(int argc, char*argv[])8 {9 MYFILE pefile1;10 pefile1.GetType();11 system("pause");12 return 0;13 }

myfile.cpp的代码:

1 #include "stdafx.h"

2 //上面这行代码是关键,并且一定要加到所有有效代码的前面。

3 #include "myfile.h"

4 #include

5

6 MYFILE::GetType()7 {8 std::cout << "the file is a mz header file." <<:endl>

myfile.h的代码:

1 classMYFILE2 {3 public:4 GetType();5 };

工程fileview如下图:

8830233292d0db9b8696146e36006cb4.png

只贴出方案1的代码,如果有兴趣可以尝试方案2和方案3。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值