存在多种针对 C 和 C++ 的编译器,其中一些用于编译微 Controller 的程序。有没有办法限制我们的程序只能在特定的编译器中编译?我猜想一定有一种方法可以使用预处理器指令来做到这一点。
最佳答案
正如 Matthieu Brucher 在他的评论中所说,一些编译器供应商提供了宏,您可以 ifdef
来检查您是否在它们下进行编译。话虽如此,有一种(尽管丑陋)方法可以限制 C++ 在特定编译器下进行编译。
假设你想让你的程序不在 clang
下编译,你可以这样做:
#ifdef __clang__
#error
#endif
这样,如果您的代码是在 clang 下编译的 - 它根本无法编译,因为如果定义了 __clang__ 宏,则 ifdef 下的代码无法编译。
关于c++ - 我们的程序可以在编译时确定它正在被哪个编译器编译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801545/