首页 > 解决方案 > 我们的程序能否在编译时确定它在哪个编译器中编译?

问题描述

C 和 C++ 存在多种编译器,其中一些用于为微控制器编译程序。有没有办法限制我们的程序只能在特定的编译器中编译?我猜想必须有一种方法可以使用预处理器指令来做到这一点。

标签: c++ccompilation

解决方案


正如 Matthieu Brucher 在他的评论中所说,一些编译器供应商提供了宏,您可以ifdef检查您是否在它们下编译。话虽如此,有一种(尽管丑陋的)方法可以限制您的 C++ 在特定编译器下编译。

假设你想让你的程序不能在 下编译clang,你可以这样做:

#ifdef __clang__
#error 
#endif

这样,如果您的代码是在 clang 下编译的 - 它根本不会编译,因为如果__clang__定义了宏,则 ifdef 下的代码无法编译。


推荐阅读