因爲長期進行C++編碼,忽視了VS中文件編譯器的設置問題,這兩天要使用到之前下載的C編碼的工程,預想打算改爲C++編譯。遇到問題
總結如下。歸根結底還是對vs使用的不熟練。
1.在VS2008中 對於某個代碼文件,是以C++編譯器編譯,還是以C編譯器編譯
與文件本身的後綴是.cpp 還是.c無關。主要按優先級依次取決於以下兩項配置
一是工程本身的編譯器設置,見工程屬性 C/C++ 高級 編譯爲/TC或/TP。此時命令行中會出現/TC或/TP。
二是選中某個特定的文件,打開其屬性頁,C/C++ 高級 編譯爲/TC或/TP。
2. C++編譯器的類型檢查比C編譯器嚴格。
因爲C編譯器的類型檢查不嚴格,所以需多C編碼都沒有強制類型轉換。這樣就造成在用C++編譯器編譯這些代碼時
經常出現的錯誤就是不能夠做類型轉換。
解決的方法: 一是加上強制類型轉換, 二是改變單個文件的編譯配置,在工程中選中某個特定的文件,
打開其屬性頁,C/C++ 高級 編譯爲/TC。,就是將這個文件的編譯方式改爲C。
工程文件中就會多出FileConfiguration配置。具體如下:
<File
RelativePath="../test.cpp"
<FileConfiguration
Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
>
<Tool
Name="VCCLCompilerTool"
CompileAs="1" //說明這個文件是以C編譯器編譯的。
/>
</FileConfiguration>
</File>
這樣就會對單個文件以C方式編譯了,無需改動代碼。