首页 > 解决方案 > C++20 不支持 .mm 文件中的语义导入

问题描述

我已将 xcode 项目中的 C++ 语言方言设置为 c++2a。

比编译具有以下行的 .mm 文件失败

@import AppKit;

当编译器设置为 c++17 或更低版本时已通过编译。

如果将其替换为以下行并与项目构建阶段的框架链接,则它可以工作。

#import <AppKit/AppKit.h>

我的.mm文件包含适配器 swift 头文件 (*-Swift.h),它是自动生成的并具有此 @import 指令,因此我无法使用上面的解决方法来避免它。

有没有人遇到过这样的问题?任何想法如何解决它?

更新:

Xcode 13 即将发布,内置支持 c++20 标准,也许有人有机会检查这个版本,看看问题是否解决?

Xcode 13 Beta 3 中的 Apple Clang 编译器新功能您现在可以在 Xcode 的构建设置中配置 C++20 和 GNU++20 C++ 语言方言。

标签: c++xcodec++20

解决方案


该错误已由 Apple 修复。

请下载 Xcode 13 Beta 5 或更新版本。那应该可以解决问题。


推荐阅读