c++ - 我们的程序能否在编译时确定它在哪个编译器中编译?
问题描述
C 和 C++ 存在多种编译器,其中一些用于为微控制器编译程序。有没有办法限制我们的程序只能在特定的编译器中编译?我猜想必须有一种方法可以使用预处理器指令来做到这一点。
解决方案
正如 Matthieu Brucher 在他的评论中所说,一些编译器供应商提供了宏,您可以ifdef
检查您是否在它们下编译。话虽如此,有一种(尽管丑陋的)方法可以限制您的 C++ 在特定编译器下编译。
假设你想让你的程序不能在 下编译clang
,你可以这样做:
#ifdef __clang__
#error
#endif
这样,如果您的代码是在 clang 下编译的 - 它根本不会编译,因为如果__clang__
定义了宏,则 ifdef 下的代码无法编译。
推荐阅读
- c++ - 在 Linux 中查询 RTC 和 NTP 时间?
- c++ - 共享实例的模板
- java - 使用 Hibernate Search Query DSL 构建模糊查询时如何处理同义词和停用词
- php - 如何通过多次 htaccess 重写达到 404 页面
- haskell - haskell 堆栈不会安装日期
- java - 在多个文件夹中搜索文件的最快方法
- load-balancing - 我们如何在 F5 BIG IP 中实现被动健康监控?
- php - 注册表单中PHP中的图像上传验证
- python - 如何合并熊猫df列中的特定值
- jenkins - 如何在 jenkins ssh 代理中接受 ssh 主机验证