And*_*zej 9 c++ clang c-preprocessor
我想在Clang中编写一个"可移植"的C++库."可移植"意味着我检测(在C预处理器中)编译环境中可用的C++功能并使用这些功能或提供我的解决方法.这类似于Boost库正在做的事情.
但是,某些功能的存在不取决于语言,而是取决于标准库实现.我特别感兴趣的是:
initializer_list是constexpr.我发现这有问题,因为默认情况下Clang不使用自己的标准库实现:它使用libstdc ++.虽然锵有预定义的预处理宏__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__,它们分别硬编码值4,2,1,他们告诉我一些关于可用的libstdc ++的功能.
如何在Clang预处理器中检查它使用的libstdc ++版本?
Clang 确实带有自己的标准库实现,称为libc++。-stdlib=libc++您可以通过添加到编译命令来使用它。
话虽这么说,有多种方法可以检查 Clang/libstdc++ C++ 支持:
__has_feature可用于检测语言功能和语言扩展的宏(和朋友)。而且,这花了我 2 分钟的谷歌搜索。
| 归档时间: |
|
| 查看次数: |
3530 次 |
| 最近记录: |