当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)(致命错误C1853: “filename.pch”预编译头文件来自编译器的早期版本,或者预编译头为C++ 而在C 中使用它(或相反))。
该错误是因为当项目中混合了 .cpp 和 .c 文件时,编译器会对它们采取不同的编译方式(主要是因为对函数声明的处理方式不同),因而不能共用一个预编译头文件。在 VC++ 中,默认的预编译头文件是针对 C++ 的 (stdafx.h 和 stdafx.cpp),当然也可以创建针对 C 的预编译头。有趣的是,在旧版的 VC++ 中,这个错误的提示很具有误导性:fatal error C1853: 'xxx.pch' is not a precompiled header file created with this compiler. 常常让人摸不着头脑。应该说,在新版中的这个提示是有所改进的。不过在网上搜索一番,对这个问题往往都是建议对整个项目取消预编译头的设置。这显然不是一个好的解决方案。对于一个比较大的工程来说,使用预编译头可以使总的编译时间大大减少。因而保留预编译头的设置才是比较好的解决方案。搜索 MSDN,针对不同的情况,可以有不同的解决方案:
本人是用方法已解决的
方案1:适用于绝大多数文件是 .cpp 或绝大多数文件是.c的情况。在这种情况下,将少数的不同类文件设为不使用预编译头是比较平衡的做法,方法是:对于 VC++6.0,在 FileView 里对要取消预编译头的 .c (或 .cpp) 文件点右键,选择 settings,在弹出的对话框右边选择 category 为 precompiled headers,再设置选项为 not using ...;(对于 VS2005,则在 solution explorer 中对相应文件点右键选择 properties,在 precompiled headers 项下设置 not using... 即可。如果需要设置多个文件,则可以按住 Ctrl 键再同时选中这些文件并设置)PS:解释如下点击项目 点击属性 然后选择C/C++ 预编译头 创建使用头文件 不使用预编译头文件

方案2:影响的文件比较多,则把它们都设置禁止预编译头的话仍然会使项目总体的编译速度大大降低,得不偿失。这时考虑可以为这组文件建立专用的预编译头。在 VC++ 极早期版本(1.5及以前版本)中是支持单个工程中建立分别针对 .c 和 .cpp 的预编译头的,但之后的版本中只支持单独的预编译头。在这种情况下,我们可以在workspace(或 solution)中建立一个新的静态链接库 (Static Library) 工程,将所有的 .c 文件独立出来加入到该工程中单独编译,这样就可以在该静态链接库中针对 .c 文件创建预编译头。但是这样做在一定程度上需要被独立出来的代码在逻辑上是属于同一模块中的,这样才便于维护。不过从设计的角度来说,这个要求一般是满足的,否则就应考虑下项目的总体设计了:P 最后别忘了设置原项目的依赖项 (dependency) 为独立出来的这个静态库项目。

原文地址:http://www.cnblogs.com/cumtb3S/archive/2011/04/18/2020185.html

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)...相关推荐

  1. 预编译头文件来自编译器的早期版本_Debug

    1.报错形式 用Visual Studio2010 编写C++程序,编译出现错误: 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反) 2.解决方法 3.原因分析 ...

  2. 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

    当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp 源文件,则可能收到 C1853 编译器错误:fatal err ...

  3. error C1853: “Debug\BigBuffer.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)...

    <pre id="best-content-1299104064" mb-10"="" style="font-size: 14px; ...

  4. fatal error C1853 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

  5. 错误:error C1853:Debug\...pch预编译头文件来自编译器版本,或者预编译头C++而在C中使用它

    错误:error C1853:"Debug\...pch"预编译头文件来自编译器版本,或者预编译头C++而在C中使用它(或相反) 原因: 因为当项目中混合了.cpp和.h文件时,编 ...

  6. 嵌入式linux头文件,飞凌嵌入式知识汇092期:C工程的组织方式(头文件的功能)以及Linux下常用的头文件的作用...

    1.1每个C++/C程序通常分为两个文件.一个文件用于保存程序的声明(declaration),称为头文件.另一个文件用于保存程序的实现(implementation),称为定义(definition ...

  7. 缺失头文件bit/c++config.h关于Arduinoi IDE编译类如Nodemcu板等报错

    关于Arduinoi IDE编译类如Nodemcu板等报错--缺失头文件#include <bits / c ++ config.h> 错误信息 来自C:\ ProgramData \ M ...

  8. 单片机sleep函数的头文件_c语言的 sleep函数到底在哪个头文件里啊

    展开全部 在里面. 在VC中使用时,sleep函数的头文件为windows.h,在Linux下,gcc编译器中,使用的头文件因gcc版本62616964757a686964616fe59b9ee7ad ...

  9. linux u8 头文件,2019-12-11 转载TCP/IP编程常用C语言头文件

    网络编程的头文件(这里所有的头文件都在/usr/include目录下面) 经常被一些头文件搞大,不知到到哪个头文件去找结构.这里做个总结 ---------------- 版权声明:本文为CSDN博主 ...

最新文章

  1. 功能演示:戴尔PowerConnect 8024交换机VLAN的创建与删除
  2. NAP客户端计算机隔离测试之五
  3. expect工具使用
  4. 国内一些大公司的开源项目
  5. x86和amd64指令参考
  6. Qt中焦点策略FocusPolicy的使用
  7. 关于@Autowired的使用:推荐使用构造函数进行注入
  8. flash linux安装教程 pdf,Flash基础入门之linux 下安装adobe flash的关键
  9. MySQL下载步骤详解
  10. 面试:Android网络优化
  11. matlab 线型、标记、颜色
  12. con 元器件符号_protel99se原理图的元件符号和封装符号大全
  13. 解决微信企业号和公众号无法调用摄像头拍视频的问题
  14. tcl 950 android 7,TCL 950测评:商务旗舰手机界的一股清流
  15. 表单验证设计的用户体验基本原则
  16. 【蛮力算法】数据结构与算法
  17. 基于晶体结构算法的函数寻优算法
  18. python安装pymongo_Python: Windows 7 64位 安装、使用 pymongo 3.2
  19. 不胜人生一场醉数据库正文 Oracle的逻辑结构(表空间、段、区间、块)——段...
  20. ShaderGraph——全息效果

热门文章

  1. CCF201503-5 最小花费(100分解题链接)
  2. POJ1555 ZOJ1720 UVA392 UVALive5309 Polynomial Showdown题解
  3. CCF NOI1057 石头剪刀布
  4. (ubuntu 下)tensorflow 的安装及版本升级
  5. Logistic Regression 的简单推导
  6. 机器学习、深度学习概念术语的理解
  7. 神奇的国际日期变更线
  8. Tricks(四十三)—— 逆序的方式访问一个 list
  9. Scala 集合 —— Array、Map、Seq、Set
  10. Trick(十一)—— list of lists 每一个属性列的获取