【问题标题】:Why does clang -dumpversion report 4.2.1为什么 clang -dumpversion 报告 4.2.1
【发布时间】:2012-10-15 10:30:29
【问题描述】:

我试图使用 -dumpversion 来确定编译器是否可用。 我的项目使用 clang 和更新的 gcc 编译,但不是使用旧的 gcc 4.2.1。

那么为什么clang要伪装成一个老gcc呢?

额外的问题,是否可以在运行时更改此值?

或者有没有人有一个不错的 autoconf 宏来用 clang 和 gcc 确定编译器版本?

【问题讨论】:

  • 您需要较新编译器的哪些功能?对此进行测试,而不是针对正在使用的编译器。

标签: clang autotools


【解决方案1】:

Clang 最初是为了与 gcc 4.2.1 兼容而编写的。今年早些时候有some discussion 要求更新该号码,但出现了问题。

对于自动配置检查,clang 建议使用其__has_feature extension。 Clang 的文档也有一个list of things you can check with __has_feature

【讨论】:

  • gcc也支持__has_feature吗?
  • __has_feature 如果他们也维护一个 __has_bug() 属性列表,那就太好了。大多数情况下,我必须更改我的 makefile 是因为我必须针对某些编译器特有的错误做变通方法。
  • 更新虚假版本号是错误的方向。 Clang 应该完全放弃这种做法。它是一流的编译器,不需要伪装成其他编译器。另见How to tell Clang to stop pretending to be other compilers?
猜你喜欢
  • 2015-05-10
  • 2018-04-10
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多