问题描述
我对 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 内在函数时产生虚假错误消息。