我们的程序能在编译时确定它是在哪个编译器中编译的吗



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

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

假设你想让你的程序不在clang下编译,你可以做一些类似的事情:

#ifdef __clang__
#error 
#endif

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

最新更新