Visual Studio 如何知道项目是 C 还是 C++?是否有任何配置或构建参数表明这一点?
VS 对 C 使用 C 编译器,对 C++ 使用 C++ 编译器吗?
Visual Studio 如何知道项目是 C 还是 C++?是否有任何配置或构建参数表明这一点?
VS 对 C 使用 C 编译器,对 C++ 使用 C++ 编译器吗?
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 代码。
除了扩展,如果你去File Properties->Advanced
,还有一个Compile As
选项,可以用来明确地将代码视为 C 代码。
它/TP
为 C++ 和 C生成/TC
。
然而,正如 Joachim 在评论中指出的那样,VC++ 并不是地球上最符合标准的编译器,因此选择“任何可行的”实际上可能是一个合理的选择。
没有 C 或 C++ 项目。任何项目都可以混合有 C、C++ 和其他语言文件。
目前尚不清楚您期望的第二个问题的答案是什么。C 语言使用 C 编译器编译,C++ 语言使用 C++ 编译器编译。很难想象还有什么其他情况是可能的。这两个编译器可能会或可能不会被实现为单个可执行程序,但这是一个相当无趣的微小细节。