C 和 C++ 查看哪个编译器用于哪个代码

C and C++ see which compiler used for which code

我目前正在从事一个大项目,该项目在一个项目中使用 C 和 C++ 代码,在我的声明中使用了 extern“c”关键字。

但是我不确定编译器是否真的对此做了任何事情,因为使用 C 关键字时我的输出是相同的。

有没有一种方法可以在控制台上打印一些东西来显示我的项目中的特定代码使用了什么编译器,或者有一种方法可以查看某些东西是否实际上是用 C 或 C++ 编译的。

例如,我尝试在 C 代码中使用 std::cout << something ,它几乎可以正常工作,但错误并没有说明诸如 std not found 或 cout not found IIRC 之类的内容,我觉得这有点奇怪。

我试过用谷歌搜索这个但没有找到任何结果。 感谢您的帮助!

编辑。 我使用 G++ 作为我的编译器,并希望代码可以在其他编译器上运行。我的 C 代码应该适用于 C 和 C++,但我需要它是 C,因为我使用联合类型修剪。我现在正在工作,所以我无法准确回忆起错误消息。我也得到了相同的输出,将文件扩展名更改为 .c。 有没有办法查看代码是否被编译为 C 或 C++ 谢谢!

这取决于 g++ 文件的扩展名。如果您的文件是 .cpp,则使用 g++。如果您的文件是 .c,则使用 gcc。

关于 extern "C" -- 这是一个 cpp 构造,用于通知编译器应使用 C abi 并应用 none c++ 名称修饰。你可以阅读关于改编的文章。由于此构造对 c++ 有意义,我希望它位于 .cpp 文件中。

要回答您的具体问题,了解它是用 C 还是 C++ 编译器处理您的代码,您可以查找

__cplusplus

标准定义

常见情况:

 #ifdef __cplusplus
    extern "C"{
 .....