gpt4 book ai didi

ios - 如何在swift中声明#pragma pack (1)

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:38 24 4
gpt4 key购买 nike

我正在尝试将 iOS 应用程序从 objective-c 重写为 swift。我正在使用序列化来通过某种通信层发送数据。在 objective-c 中,我在每个结构的顶部使用了 #pragma pack (1),以便使用顺序布局,而无需在数据成员之间进行填充。我试图在结构的顶部使用 PRAGMA_STRUCT_PACK。它似乎在 Playground 上工作,但在我的应用程序中实现它时,我收到一条错误消息:“顶层不允许使用表达式”。

from playground enter image description here

最佳答案

Swift 不支持显式指定结构类型的数据布局。 (至少,目前没有。File a bug 如果有你想看到的功能,也许 Apple 会把它们放在未来的版本中?)现在你最好的选择可能是声明布局敏感的结构(和函数来访问它们)在 C 中并从 Swift 中调用它们。

在 Swift 源代码中编写 PRAGMA_STRUCT_PACK 会给您一个错误,因为该宏一旦从 C 导入,计算结果为文字 1。在 C 中,您应该使用该宏来检测编译器是否支持 #pragma pack(在继续发出 #pragma pack 指令之前)。

(您可能会看到令人困惑的答案/评论,因为 lots of people were looking for #pragma mark 在早期的 Swift 测试版期间。但这不是他们正在谈论的 #pragma。)

关于ios - 如何在swift中声明#pragma pack (1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28148555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com