第一章的sample1,文中提到由于windows底层代码基本上是用c语言编写的,因此新工程里的CPP文件要改为C文件。
  但是在编译时出现错误fatal error C1853: "debug/1_1.pch" is not a precomplied header file with this complier......
  这个问题还真是头一次遇到,怎么办?百度一下,解决办法如下:
  错误原因:
  该错误是因为当项目中混合了 .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 键再同时选中这些文件并设置。
  方案2:如果受影响的文件比较多,则把它们都设置禁止预编译头的话仍然会使项目总体的编译速度大大降低,得不偿失。这时考虑可以为这组文件建立专用的预编译头。在 VC++ 极早期版本(1.5及以前版本)中是支持单个工程中建立分别针对 .c 和 .cpp 的预编译头的,但之后的版本中只支持单独的预编译头。在这种情况下,我们可以在workspace(或 solution)中建立一个新的静态链接库 (Static Library) 工程,将所有的 .c 文件独立出来加入到该工程中单独编译,这样就可以在该静态链接库中针对 .c 文件创建预编译头。但是这样做在一定程度上需要被独立出来的代码在逻辑上是属于同一模块中的,这样才便于维护。不过从设计的角度来说,这个要求一般是满足的,否则就应考虑下项目的总体设计了:P 最后别忘了设置原项目的依赖项 (dependency) 为独立出来的这个静态库项目。
  我采用的是方案1,因为我的工程量很小,simple windows consloe application

转载于:https://www.cnblogs.com/whiteyun/archive/2011/07/22/2113544.html

VC编译器中混有.c文件时出现fatal error C1853错误(转)相关推荐

  1. VS工程中混有.c文件时出现fatal error C1853错误

    VS工程中混有.c文件时出现fatal error C1853错误 工程里的CPP文件要改为C文件后,在编译时出现错误fatal error C1853: "debug/1_1.pch&qu ...

  2. maven进行install时出现Fatal error compiling错误

    错误图片: 原因:maven与lombok结合编译出现问题,maven版本较高,lombok jar包版本较低,因此编译lombok时无法编译. 解决:升级lombok的jar包版本或者降低maven ...

  3. sublime python3中读取和写入文件时如何解决编码问题

    sublime python3中读取和写入文件时如何解决编码问题 参考文章: (1)sublime python3中读取和写入文件时如何解决编码问题 (2)https://www.cnblogs.co ...

  4. 内存映射文件 写入 卡住_在Java中使用内存映射文件时检测(写入)失败

    内存映射文件 写入 卡住 内存映射文件是一个很好的并且经常被忽视的工具. 我不会在这里详细介绍它们的工作方式(使用 力 Google Luke!),但我将快速总结其优势: 操作系统提供的延迟加载和写入 ...

  5. 在Java中使用内存映射文件时检测(写入)失败

    内存映射文件是一个很好的并且经常被忽视的工具. 我不会在这里详细介绍它们的工作方式(使用 力 Google Luke!),但我将快速总结其优势: 操作系统提供的延迟加载和写入缓存(您不必自己编写,并且 ...

  6. IdealU 中使用python新建文件时没有SDK文件解决方法

    IdealU 中使用python新建文件时没有SDK文件解决方法 1.下载Anaconda3-2019文件,下载完成后安装时点击下一步安装成功. 2.配置环境变量. 3.在CMD中输入python.出 ...

  7. 打印文件提示服务器错误,要打印文件时,总是出现打印错误,上班族的你快来看看吧!...

    原标题:要打印文件时,总是出现打印错误,上班族的你快来看看吧! 我们在对打印机的使用过程中,常常都会出现打印错误,无法进行取消打印的情况.那么,当我们遇上这个问题是该如何处理呢?相信大家都会选择进行重 ...

  8. Mac中IDEA在配置tomcat时一直出现404的错误

    Mac中IDEA在配置tomcat时一直出现404的错误 多方尝试无果,后来突然发现, 在这里插入图片描述 错误原因在于应该在Deployment下选择Artifacts中,选择你web项目所对应的w ...

  9. 解决打开WEB ADI的excel文件时出现Run-time error '1004' 的错误

    解决打开WEB ADI的excel文件时出现Run-time error '1004' 的错误.下面的解决方法来自My support Run-time error '1004' Opening We ...

最新文章

  1. 使用 labelImg 制作YOLO系列目标检测数据集(.xml文件)
  2. ML之相似度计算:图像数据、字符串数据等计算相似度常用的十种方法简介、代码实现
  3. boost::bucket_sorter用法的测试程序
  4. linux ubuntu 软件安装的三种方式
  5. jquery ajax 文本丢失加号和连接号的问题
  6. 、简述global关键字的作用_GLOBAL和$GLOBALS[]的讲解
  7. oracle @id@,修改oracle用户id
  8. 什么是迁移学习?迁移学习的实现方法与工具分析
  9. NBA的字母哥如何拿到2415万美金年薪
  10. oracle 列出asm磁盘,如何列出ASM磁盘组的所有磁盘
  11. 视频号如何使用OBS推流?
  12. 你有没有被人不动声色的保护过?
  13. Eclipse中格式化JS、HTML代码
  14. php代码出现notice,PHP提示Notice: Undefined variable的解决办法
  15. SonarQube代码质量管理
  16. 微信模板消息推送接口说明
  17. 人体力学-线速度与角速度
  18. 电子学生计算机怎么玩游戏,大三学生自曝电脑耗时:2年半340402分钟
  19. 快捷键FN+F6改为F6
  20. 5款可以在学习和办公上提供帮助的软件

热门文章

  1. 量子计算机 计算混沌,深入了解量子混沌可能是量子计算机的关键
  2. pandas 空字符串与na区别_python从安装到数据分析应用高手 Pandas处理文本数据(一)...
  3. RN子组件获取redux数据
  4. Vulnhub靶场渗透练习(二) Billu_b0x
  5. netty权威指南学习笔记三——TCP粘包/拆包之粘包现象
  6. 基于bootstrap_登陆页面
  7. nginx优化——包括https、keepalive等
  8. PHP5.4连接sqlserver
  9. mysql 批量删除之大坑
  10. Unity3d优化文章