2017-07-01 4 views
0

Swift 3アプリケーションでCライブラリを使用しています。ライブラリで定義されstruct Sの一つはthuslyに定義されています。私のスウィフトコードでC構造体がスウィートコンバージョンに存在しない

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

私はこのtermRow型のプロパティを参照するとき、私はbitmapsflagsへのアクセス権を持っていますが、chars配列はどこにもありません見つけられる! Xcodeで、オートコンプリートは物語 - 何chars値:ここ

enter image description here

私の仮定は、スウィフトはuint64_t配列を変換することができないということではありませんか?そうであれば、ライブラリの残りの部分を取り締まることなく、Swiftコードで動作させるにはどうすればよいですか?

+1

たぶん、フレキシブルアレイメンバーが気に入らないかもしれません。 –

+0

ライブラリとは何ですか?あなたは完全なヘッダーを持っていますか? C、C++、Objective-Cプログラムで使ってみましたか? – ColGraff

答えて

1

あなたのrow変数がローカルインスタンスのstruct termRowであると仮定します。 chars配列が初期化されていますか?境界が定義されていない構造体の最後にある配列は、不定長の配列です。初期化されていない場合(ローカルの場合)、または割り当てられている場合(ポインタの場合)、技術的には存在しません。 Xcodeがあなたに伝えようとしているものかもしれません。

+0

実際には、配列にサイズを指定すると表示されます。ああ!ありがとう。 –

+0

汗がかからない。 「不確定」は「変数」を意味するものではないことにも注意してください。初期化または割り当てのいずれかによって配列がバインドされると、指定されたインスタンスのサイズがその時点から固定されます。 –

関連する問題