輕鬆搞死VS2008的C++編譯器,error PRJ0002,優化編譯器遇到問題需要關閉
這兩天被一個編譯器異常崩潰的問題弄的很頭疼,不知道問題,跟到了出錯的檔案,也沒發現問題,最後在網上找到了跟我有相同經歷的TX,(百度找完了找google,最終找到的)最後分享出來,方便更多的人能夠搜尋到。遇到問題可以儘快解決。。。
有個VS2005的VC++工程可以正常編譯,轉換到VS2008下編譯,編譯器出錯崩潰了,錯誤提示大概如下:
error PRJ0002 : 錯誤的結果 1 (從“C:/Program Files/Microsoft Visual Studio 9.0/VC/bin/cl.exe”返回)
剛開始很莫名其妙,後來追蹤到編譯器崩潰前編譯的最後一個原始檔,
經過逐一註釋檔案中的程式碼段,終於發現,只要出現下面這樣的語句,就可以令VS2008的C++編譯器崩潰:
fprintf(fp,"%s %d/n","cl.exe會崩潰"); //缺少對應的整型引數導致編譯器cl.exe崩潰
我的測試貌似就是這樣的,上面函式多加一個引數他就不會崩潰,額,這個真的很神奇,應該算是編譯器的bug吧
【補記】
經過最新測試發現:原來是VC8(VS2005)的專案預設屬性有開/Wp64 (檢測64位可移植性問題),
在VC9(VS2008)下面,如果仍然開啟/Wp64編譯選項,那麼遇到上述這種程式碼編譯器就會崩潰,
如果在專案屬性裡禁止"檢測64位可移植性問題"(/Wp64 )這個選項,則編譯就可以正常通過,編譯器不會崩潰。
總結:VC8的專案轉換到VC9,如果沒有關閉/Wp64編譯選項,那麼如果遇到下面這種語句,編譯器就會崩潰.
fprintf(fp,"%s %d/n","/Wp64開啟,cl.exe會崩潰"); //缺少對應的整型引數導致編譯器cl.exe崩潰
有圖有真相,崩潰的截圖如下:
相關文章
- C++編譯器優化C++編譯優化
- go的編譯優化問題Go編譯優化
- 淺談編譯器優化編譯優化
- 配置pycharm 編譯器時遇到的一些問題PyCharm編譯
- 編譯器優化:方法內聯編譯優化
- 編譯器相關編譯
- gcc 編譯器與 clang 編譯器GC編譯
- V8 之旅:優化編譯器優化編譯
- 【53】不要輕忽編譯器的警告編譯
- 編譯器的編譯基本過程編譯
- ☕【Java技術指南】「編譯器專題」深入分析探究“靜態編譯器”(JAVA\IDEA\ECJ編譯器)是否可以實現程式碼優化?Java編譯Idea優化
- 淺談彙編器、編譯器和直譯器編譯
- [譯]iOS編譯器iOS編譯
- 關於TIJ的編譯問題編譯
- [翻譯]關於Swift的編譯時間優化Swift編譯優化
- 關於Basic程式直譯器及編譯原理的簡單化(2)---C++封裝好的Basic直譯器 (轉)C程式編譯原理C++封裝
- 輕量級 Web 元件編譯器 — StencilWeb元件編譯
- VS編譯器優化誘發一個的Bug編譯優化
- 一張圖解析 編譯器編譯流程圖解編譯
- Linux 下如何繞過編譯器優化Linux編譯優化
- FreeBSD中的GNU C編譯器--編譯器GCC(轉)編譯GC
- lombok編譯遇到“找不到符號的問題”Lombok編譯符號
- 編譯器的自展和自舉、交叉編譯編譯
- CUDAFORTRAN編譯器編譯
- vue編譯器Vue編譯
- JVM編譯優化JVM編譯優化
- webpack 編譯優化Web編譯優化
- [譯] 優化 Swift 的編譯時間優化Swift編譯
- 安裝c, c++編譯器 on AIXC++編譯AI
- 我擦 遇到個大坑啊 C和C++混合編譯問題C++編譯
- 程式碼線上編譯器(上)- 編輯及編譯編譯
- 編譯器有關的Makefile語法編譯
- c++模板類的使用,編譯的問題C++編譯
- Go編譯器簡介【譯】Go編譯
- CUDA常見編譯器配置問題一覽編譯
- 編譯器如何生成彙編編譯
- Vue 原始碼解讀(9)—— 編譯器 之 優化Vue原始碼編譯優化
- 探索c#之尾遞迴編譯器優化C#遞迴編譯優化