处于发布模式的 Xcode 无法编译 <immintrin.h> - 抱怨 __builtin_ia32_emms()

问题描述

我对 Xcode 非常陌生,正在 macOS Catalina 10.15.7 上使用 Xcode 12.4 (12D4e) 为 macOS 开发 SIMD(SSE/AVX) 代码。
这个非常简单的代码可以在 Debug 方案中编译:

#include <immintrin.h>

int main(int argc,const char * argv[]) {
    return 0;
}

但是在 Release Scheme 中,标题出错:“函数调用的参数太少,预期为 2,有 0”这一行“mmintrin.h”。

    __builtin_ia32_emms();

如何在 Release 方案中编译它?

解决方法

如果您有任何特定于 Intel 的代码(例如 Intel 内在函数),那么您需要确保您的 Release 版本仅针对 x86-64 架构设置。在 Xcode 12 中,默认是在 Release 版本中为 x86-64 和 Apple Silicon 构建,这会导致在构建的 Apple Silicon 部分遇到 Intel 内在函数时产生虚假错误消息。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...