【问题标题】:C Struct Missing Properties in Swift ConversionSwift 转换中的 C 结构缺少属性
【发布时间】:2017-07-01 02:33:12
【问题描述】:

我在我的 Swift 3 应用程序中使用了一个 C 库。库中定义的structs 之一是这样定义的:

struct termRow {
    void *bitmaps[BITMAP_PTRS];
    int flags;
    uint64_t chars[];
};

在我的 Swift 代码中,当我引用 termRow 类型的属性时,我可以访问 bitmapsflags,但找不到 chars 数组!在 Xcode 中,自动完成功能讲述了这个故事——没有 chars 值:

我的假设是 Swift 无法翻译 uint64_t 数组?如果是这种情况,我该怎么做才能让它在我的 Swift 代码中工作,而不会搞砸库的其余部分?

【问题讨论】:

  • 也许它只是不喜欢灵活的数组成员。
  • 图书馆是什么?你有完整的标题吗?您是否尝试在 C、C++ 或 Objective-C 程序中使用它?

标签: c swift struct swift3


【解决方案1】:

我从图像中假设您的row 变量是struct termRow 的本地实例。您确定 chars 数组已初始化吗?没有定义边界的结构末尾的数组是长度不确定的数组;如果它没有被初始化(在本地的情况下)或分配的(在指针的情况下),那么它在技术上是不存在的。也许这就是 Xcode 试图告诉你的。

【讨论】:

  • 确实,给数组一个大小可以让它显示出来。唉!谢谢。
  • 没有汗水。另请注意,“不确定”并不意味着“变量”。一旦数组有界,无论是通过初始化还是分配,对于给定的实例,大小从那时起就固定了。
猜你喜欢
  • 1970-01-01
  • 2023-01-19
  • 2017-03-19
  • 1970-01-01
  • 2019-02-09
  • 2018-11-16
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多