c++ - Release模式下的 Xcode 无法编译 <immintrin.h> - 提示 __builtin_ia32_emms()

标签 c++ xcode x86-64 simd intrinsics

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

#include <immintrin.h>

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

但是在发布方案中, header 会出现错误:“mmintrin.h”的这一行“函数调用的参数太少,预期为 2,有 0”。

    __builtin_ia32_emms();

我该怎么做才能在发布方案中编译它?

最佳答案

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

关于c++ - Release模式下的 Xcode 无法编译 <immintrin.h> - 提示 __builtin_ia32_emms(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66453127/

相关文章:

c++ - 将主函数拆分为多个文件 C++

c++ - `valarray` 是否能够利用 SIMD 支持?

c++ - iOS didFailToConnectPeripheral : with error Code=0 "Unknown error."

c++ - 无法编译任何 C++ 程序;错误 : unknown type name 'uint8_t'

ios - LLVM Xcode 版本 4.6.1 (4H512) 的编译器错误

c++ - 在 Cocos2d 中设置相对于场景的位置

切换 SDK 后 Xcode Target 依赖项错误

c - 错误 : ld. 所以:无法预加载来自 LD_PRELOAD 的对象 'getpid.so':忽略

assembly - 使用 AVX2 添加双字和四字混合的最快方法?

gcc - 如何在GNU汇编器中将函数或标签的地址加载到寄存器中