相关疑难解决方法(0)

如何在预处理时间可靠地检测clang的版本?

显然,与XCode捆绑在一起的clang不尊重上游__clang_major____clang_minor__值,而是报告某种面向XCode用户的版本.

以下是clang的各种MacPorts安装的参考值.他们似乎尊重上游版本标识符.在Linux上测试时,我得到类似的值.

?  prohibit-clang-3.2  /opt/local/bin/clang++-mp-3.2 -dM -E -x c /dev/null |
grep __clang_m
#define __clang_major__ 3
#define __clang_minor__ 2

?  prohibit-clang-3.2  /opt/local/bin/clang++-mp-3.3 -dM -E -x c /dev/null |
grep __clang_m
#define __clang_major__ 3
#define __clang_minor__ 3

?  prohibit-clang-3.2  /opt/local/bin/clang++-mp-3.4 -dM -E -x c /dev/null |
grep __clang_m
#define __clang_major__ 3
#define __clang_minor__ 4
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,Apple提供了clang has __clang_major____clang_minor__跟踪XCode版本的版本,而不是基本的clang版本:

?  prohibit-clang-3.2 
/Applications/Xcode-4.6.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
-dM -E -x c /dev/null | grep __clang_m
#define __clang_major__ 4
#define __clang_minor__ 2 …
Run Code Online (Sandbox Code Playgroud)

c++ xcode clang c-preprocessor

6
推荐指数
1
解决办法
3124
查看次数

标签 统计

c++ ×1

c-preprocessor ×1

clang ×1

xcode ×1