如何按MSVC编译器版本查询对应的内置函数(Intrinsics)
MSVC与GCC内置函数版本支持查询指南
MSVC部分
__assume()从Visual Studio 2005(对应MSVC 8.0,预定义宏_MSC_VER=1400)开始支持,用来替代GCC的__builtin_unreachable()时,可这么写版本判断:#if _MSC_VER >= 1400 __assume(0); // 标记不可达代码 #else // 旧版本MSVC兼容逻辑 #endif- 查询MSVC内置函数及版本的靠谱方式:
- 翻MSVC自带的
intrin.h等内置头文件,里面的函数定义大多带版本条件编译,能直接看到特性引入的版本 - 用编译测试验证:写包含目标内置函数的小代码,用不同版本MSVC编译,看是否通过
- 翻MSVC自带的
GCC部分
- 查GCC内置函数版本支持,别只盯着更新日志,试试这些方法:
- 看GCC官方内置函数文档,每个函数都会标注最低支持版本
- 用GCC的版本宏
__GNUC__、__GNUC_MINOR__做判断,同时写小代码片段编译验证特性是否存在 - 查看GCC源码里的
builtins.def文件,里面列了所有内置函数及其引入版本
内容的提问来源于stack exchange,提问作者Newb
相关产品推荐
相关产品推荐

