有個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 編譯器選項(VS2008)
c c 編譯器選項 優化 o1 最小化空間 o2 最大化速度 ob內聯擴充套件 預設 n 0 od 禁用優化 預設 og 啟用全域性優化 oi 啟用內部函式 os 優選 空間 ot 優選 速度 ox 最大化優化 oy 啟用幀指標省略 生成 輸出檔案 fa file 命名程式集列表檔案 fa scu ...
C 編譯器選項(VS2008)
c c 編譯器選項 優化 o1 最小化空間 o2 最大化速度 ob內聯擴充套件 預設 n 0 od 禁用優化 預設 og 啟用全域性優化 oi 啟用內部函式 os 優選 空間 ot 優選 速度 ox 最大化優化 oy 啟用幀指標省略 生成 輸出檔案 fa file 命名程式集列表檔案 fa scu ...
VS2008編譯器下ACE的配置
說一下vs2008學習ace的配置方法,至於vs2008的安裝就不必多說了。最新版本全在這裡 版本太多了,可以選擇 previous versions ace 6.0.0.zip 或者previous versions ace 6.0.0.tar.gz 這兩者可能只是格式上的不同,具體未查證,但均可...