預編譯頭文件來自編譯器的早期版本,或者預編譯頭為 C++ 而在 C 中使用它(或相反)

當 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.pswp.cn/news/254496.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254496.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254496.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

甲骨文稱 Java 序列化的存在是個錯誤,計劃刪除

甲骨文計劃從 Java 中去除序列化功能,因其在安全方面一直是一個棘手的問題。 Java 序列化也稱為 Java 對象序列化,該功能用于將對象編碼為字節流...Oracle 的 Java 平臺小組的首席架構師 Mark Reinhold 說:“刪除序列化是一個長期目標&#x…

CreateProcess

Windows 進程創建完整過程(除去細節) 當前流程是分析WinXP x86得到的,在最新版本Windows上不一定正確,但是可以做一個參考, 由于我這里符號并不全,所以導致我這里有些東西看到的可能是錯誤的,誤…

系統:Centos 7.2 內核3.10.0-327.el7.x86_64 # 內核需要高于2.6.32

系統:Centos 7.2 內核3.10.0-327.el7.x86_64 # 內核需要高于2.6.32 Drbd : 192.168.8.111:node1/dev/drdb0 /mydeta 192.168.8.112 : node2Mysql_vip: 192.168.8.200 #下章實現 # 需要的軟件包:mariadb-5.5.53-linux-i686.tar.gzdrbd84-utils…

Smoothing濾波處理halcon算子,持續更新

目錄anisotropic_diffusionbilateral_filterbinomial_filtereliminate_min_maxeliminate_spfill_interlacegauss_filterguided_filterinfo_smoothisotropic_diffusionmean_imagemean_nmean_spmedian_imagemedian_rectmedian_separate_median_weightedmidrange_imagerank_imager…

日志文件在VS中輸出為亂碼問題

原因:主要是文件文字格式問題(使用使用 Unicode 字符集):修改項目/屬性/常規/字符集/ 未設置

初學者電腦編程入門

1、首先要對編程有個比較大概的了解,編程的對象,編程的原理,編程的目的等等。2、在了解編程基本知識后,要想想自己學習編程后到底要干什么以確定學習的方向。比如說是想要開發手機app,網站開發,企業系統等。…

MVC架構模式(2)

簡介: MVC最初是在Smaltalk_80中被用來構建用戶界面的。M代表模型Model,V代表視圖View,C代表控制器Controller。 Model模型層,可以簡單理解就是數據層,用于提供數據。在項目中,(簡單理解&#x…

Scene Flow場景流halcon算子,持續更新

目錄scene_flow_calibscene_flow_uncalibscene_flow_calib 功能:計算兩個立體圖像對之間校準的場景流。 scene_flow_uncalib 功能:計算兩個立體圖像對之間未校準的場景流。

ios學習之旅---指針也不難

1、認識指針#include <stdio.h> //基本數據類型作為函數參數傳遞是值傳遞 //void moveFront(int x ,int y) //{ // x x 2; //} void test() {// 確定當前坐標int x 20;int y 150;printf("%p\n",&x);printf("%lu\n",&x);*((int *)(0…

FFmpeg中MPEG-4編碼程序追蹤,其他FFMPEG自帶編碼器同理

FFmpeg中與MPEG-4編碼相關的主要文件有mpegvideo.c&#xff0c;h263.c等。在mpegvideo.c中&#xff0c; AVCodec mpeg4_encoder { "mpeg4", CODEC_TYPE_VIDEO, CODEC_ID_MPEG4, sizeof(MpegEncContext), MPV_encode_init, MPV_encode_picture, …

符合skyline的3dml網絡發布服務

技術交流群&#xff1a;665060698使用java web實現&#xff1b;接口符合skyline的3dml模型形式&#xff1b;通過簡單的發布界面&#xff0c;直接發布3dml模型&#xff1b;實現te pro在客戶端讀取數據&#xff1b;實現在te pro客戶端的對應查詢功能&#xff1b;負載可以達到skyl…

Texture Inspection 紋理檢驗halcon算子,持續更新

目錄deviation_imageentropy_imagetexture_lawsdeviation_image 功能&#xff1a;計算矩形窗口內的灰度值的標準偏差。 entropy_image 功能&#xff1a;計算矩形窗口內的灰度值的平均信息量。 texture_laws 功能&#xff1a;使用一個Laws文本濾波器&#xff08;地質變形&a…

51NOD 1125(交換機器最小代價) (貪心) 思想 !思想!

題目鏈接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId1125 1125 交換機器的最小代價基準時間限制&#xff1a;1 秒 空間限制&#xff1a;131072 KB 分值: 80 難度&#xff1a;5級算法題收藏關注有N臺機器重量各不相等&#xff0c;現在要求把這些機器按照…

《Python從小白到大牛》簡介

《Python從小白到大牛》已經上市&#xff01; 本書是一部系統論述Python編程語言、OOP編程思想以及函數式編程思想的立體化教程&#xff08;含紙質圖書、電子書、教學課件、源代碼與視頻教程&#xff09;。為便于讀者高效學習&#xff0c;快速掌握Python編程方法。本書作者精心…

c語言基礎知識_結構體訪問,共同體,枚舉類型

C語言結構體變量的引用&#xff1a;對于定義的結構體類型的普通變量&#xff0c;訪問其成員用圓點運算符&#xff08;“.”&#xff09;&#xff0c;標準訪問方式如下&#xff1a;   結構體變量名.成員名   對于定義為指向結構體的指針變量&#xff0c;用箭頭運算符&#x…

Wiener Filter維納濾波器halcon算子,持續更新

目錄gen_psf_defocusgen_psf_motionsimulate_defocussimulate_motionwiener_filterwiener_filter_nigen_psf_defocus 功能&#xff1a;產生一個均勻散焦模糊的脈沖相應。 gen_psf_motion 功能&#xff1a;產生一個&#xff08;線性&#xff09;運動模糊的脈沖相應。 simula…

【轉載】數據庫操作:添加、插入、更新語句

原始日期&#xff1a; 2016-07-22 12:03 SQL常用命令使用方法&#xff1a;(1) 數據記錄篩選&#xff1a;sql"select * from 數據表 where 字段名字段值 order by 字段名 [desc]"sql"select * from 數據表 where 字段名 like %字段值% order by 字段名 [desc]&qu…

webpack學習

全局安裝安裝webapck npm i webpack -g 現在我們就可以全局的使用webpack命令了 webpack中基礎的命令&#xff1a; webpack enter.js output.js --watch 這個命令是將enter.js打包成output.js&#xff0c;然后html只需要引用該文件就可以了看如下entry.js,這是簡單的js代碼。 /…

3D 相機halcon算子,持續更新

目錄add_scene_3d_cameraadd_scene_3d_instanceadd_scene_3d_labeladd_scene_3d_lightclear_scene_3dcreate_scene_3ddisplay_scene_3dget_display_scene_3d_inforemove_scene_3d_cameraremove_scene_3d_instanceremove_scene_3d_labelremove_scene_3d_lightrender_scene_3dset…

Selenium 中文API

Selenium 中文API 轉自&#xff1a;http://blog.csdn.net/lh9529/article/details/3946567 概念 Selenium 通過命令進行驅動。Selenium 可歸納為三種“風格”&#xff1a;動作、輔助和斷言。每一個命令調用就是下表中的一行。 命令 目標 值 動作(Actions)命令一般用于操作應用…