5

Visual Studio 如何知道项目是 C 还是 C++?是否有任何配置或构建参数表明这一点?

VS 对 C 使用 C 编译器,对 C++ 使用 C++ 编译器吗?

4

3 回答 3

7

VS 对 C 使用 C 编译器,对 C++ 使用 C++ 编译器吗?

编译器足够聪明,cl可以知道(基于文件扩展名)文件是文件.cpp还是.cc文件 - 它认为是 C++ 文件。并且cl编译器会将.c文件视为 C 程序源文件,并进行相应的编译。虽然它确实加载了一个单独的dll文件进行编译CC++归档。但这是实现定义的。

但是,有一个开关可以覆盖cl基于文件扩展名的行为。

要编译为 C++ 源文件(即使扩展名为.c),命令为: cl /TP yourfile.c 但是请注意,该文件应包含有效的 C++ 代码。

并且要编译为 C 源文件(扩展名为.cpp),命令为: cl /TC yourfile.cpp 但是请注意,该文件应包含有效的 C 代码。

于 2013-03-21T13:04:11.467 回答
2

除了扩展,如果你去File Properties->Advanced,还有一个Compile As选项,可以用来明确地将代码视为 C 代码。

/TP为 C++ 和 C生成/TC

然而,正如 Joachim 在评论中指出的那样,VC++ 并不是地球上最符合标准的编译器,因此选择“任何可行的”实际上可能是一个合理的选择。

于 2013-03-21T13:07:19.340 回答
0

没有 C 或 C++ 项目。任何项目都可以混合有 C、C++ 和其他语言文件。

目前尚不清楚您期望的第二个问题的答案是什么。C 语言使用 C 编译器编译,C++ 语言使用 C++ 编译器编译。很难想象还有什么其他情况是可能的。这两个编译器可能会或可能不会被实现为单个可执行程序,但这是一个相当无趣的微小细节。

于 2013-03-21T13:48:29.833 回答