Visual Studio如何知道项目是C还是C ++?是否有任何配置或构建参数指示这个?
VS是否将C编译器用于C,C ++编译器用于C ++?
答案 0 :(得分:7)
VS是否将C编译器用于C,C ++编译器用于C ++?
cl
编译器非常聪明,可以知道(基于文件扩展名)文件是.cpp
还是.cc
文件 - 它被认为是C ++文件。 cl
编译器会将.c
文件视为C程序源文件,并进行相应编译。虽然它确实加载了单独的dll
文件来编译C
和C++
文件。但这是实施定义的。
但是,有一个开关可以根据文件扩展名覆盖cl
的行为。
要编译为C ++源文件(即使扩展名为.c
),命令也是:
cl /TP yourfile.c
但请注意,该文件应包含有效的C ++代码。
要编译为C源文件(扩展名为.cpp
),命令为:
cl /TC yourfile.cpp
但请注意,该文件应包含有效的C代码。
答案 1 :(得分:2)
除了扩展名,如果你转到File Properties->Advanced
,则会有一个Compile As
选项,可用于明确将代码视为C代码。
它为C ++生成/TP
,为C生成/TC
。
正如约阿希姆在评论中指出的那样,VC ++并不是这个星球上最符合标准的编译器,因此选择“无论有效”可能实际上是一个合理的选择。
答案 2 :(得分:0)
没有C或C ++项目。任何项目都可以混合使用C,C ++和其他语言文件。
目前尚不清楚你期待的第二个问题是什么样的答案。 C语言使用C编译器编译,C ++语言使用C ++编译器编译。很难想象其他案例是可能的。这两个编译器可能会也可能不会被实现为单个可执行程序,但这是一个相当无趣的细节。