c++ - 我们的程序可以在编译时确定它正在被哪个编译器编译吗?

标签 c++ c compilation

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

最佳答案

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

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

#ifdef __clang__
#error 
#endif

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

关于c++ - 我们的程序可以在编译时确定它正在被哪个编译器编译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801545/

相关文章:

c++ - 在 C++ 中将多个函数传递给 vector 中的另一个函数

c++ - 按值传递函数(?)而不是函数指针?

c - while循环不起作用?

c++ - 对原子变量的非原子操作,反之亦然

java - 如何编译一个任意命名与公共(public)类名不同的.java文件

ubuntu - 以普通用户身份选择替代库

c++ - CUDA - 中值滤波器实现没有产生预期的结果

python - 使用与系统使用 Python cdll import 不同的 zlib.so 版本

c++ - "mangle"(代表)内存的最佳方式

C++在需要返回时删除用new创建的对象