【发布时间】:2014-04-27 04:42:48
【问题描述】:
我有一个 Xcode 项目,我正在迁移它以与 clang 的选项 -stdlib libc++ 一起使用,以启用 C++11 支持。我的一些源文件需要知道正在使用哪个库,例如,这样我才能执行以下操作:
#ifdef HAVE_CPP11_LIB_SUPPORT
#include <memory>
#else
#include <tr1/memory>
#endif
#ifdef HAVE_CPP11_LIB_SUPPORT
vector.emplace_back(newValue);
#else
vector.push_back(newValue);
#endif
我在查找为此选项设置的预处理器宏(如果确实有的话)时遇到了麻烦。我试过用以下方式转储 clang 的输出:
clang -x c++ -std=c++11 -stdlib=libc++ -dM -E - < /dev/null
比较:
clang -x c++ -std=c++11 -stdlib=libstdc++ -dM -E - < /dev/null
但这给出了相同的结果。请注意,我不想打开我们是否使用 c++11 language 设置,而是打开我们是否使用 c++11 library。有没有可靠的方法在代码中检测到这一点?
【问题讨论】: