因为长期进行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方式编译了,无需改动代码。