解决Visual C++ 混合编译C和C++文件时的错误fatal error C1853

1.概念
所谓的预编译头文件,其实我们很熟悉的,这里的头文件(Microsoft Visual C++中)一般的说就是我们常见的stdafx.h。这个名字是微软默认的,名字还可以改,内容更加可以改。这个就是待编译的头文件,但是,我们知道,头文件是不能被编译的,因此,我们就可以用一个stdafx.cpp,这个文件中一开始可以没有内容,但必须加一句“include<stdafx.h>”,然后compile(ctrl+F7)一下就可以出现一个(.pch)文件,这个就是我们常说的预编译头文件。
为什么需要预编译头文件呢?原因很简单,这个其实这么做的目的就是减少编译时间。因为,如果不是这么做的话,在编译的时候,假如一个头文件被很多的文件使用,那就费时了,因为得一次又一次地进行编译。而有了预编译头文件的话,我们把出现频率很高的那部分东西(通常是一些系统的头文件或者是一些自己设定的但是不常变动的头文件)已经编译好了,就像一个通用零件一样,已经搞好了,用到的时候就直接装就行。这样就可以利用编译好的成果,从而能非常有效地节约编译的时间了。
2.VS2008中的预编译头文件
打开VS2008,File->New->Project,建立一个Win32 console application,选择next,在Application Settings中的Additional options:中的Precompiled header默认勾选,点Finish,就可建立一个带预编译头文件的Win32控制台程序了。可以看到Solution explorer中有stdafx.h和stdafx.cpp,这两个东西就是用来生成预编译头文件的,也是微软默认的。
此时compile,会发现是不能成功的,错误是 fatal error C1083: Cannot open precompiled header file: 'Debug×××.pch': No such file or directory。意思就是没有.pch文件。如上面所说,其实编译的过程是利用预先编译好的预编译头文件来减少编译的工作量,那么既然没有这个预编译头文件,那怎么编译呢?我们可以在Solution explorer,右击工程,单击property,在右边的框中选择Configuration Properties->C/C++->Preprocessor,看到在右边的Create/Use Precompoled Header中默认的是Use Precompiled Header(/Yu),也就是说现在还没有建立.pch呢,就开始用了,显然不适合,那就改喽,单击之,选择Create Precompoled Header(/Yc),便可以了。编译之,可以看到在Debug文件夹中多了个.pch,也就是说这个预编译头文件搞定了。
再回到Create/U

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值