3

このドキュメントは、何が${type}Var.

...Kotlin列挙型の場合、名前が付けられます ${type}Var

なに?! Kotlin列挙型とは? 通常の Kotlin 列挙型?

enum class MyEnum {
    FIRST, SECOND
}

暗示したとは思いません。

では、このドキュメントの例を見てみましょう。

struct S* にマッピングされ ますCPointer<S>int8_t* にマッピングされます CPointer<int_8tVar>

わかりました

char** にマッピングされます CPointer<CPointerVar<ByteVar>>

char**にマップされているのに にマップされてCPointer<CPointerVar<ByteVar>>いないのはなぜCPointer<CPointer<Byte>>ですか?

最後に問題はIntVarLongVar、 、CPointerVar<T>および のようなものとは何${type}Varですか?

4

2 に答える 2

1

IntVarLongVarCPointerVar<T>およびその他のようなものは何${type}Varですか?

それはあなたが引用した文の終わりにあります:

この型の左辺値を表す Kotlin 型、つまり、単純な不変の自己完結型の値ではなく、メモリ内にある値

「メモリ内にある」とは、アドレスを取得できることを意味します( CまたはKotlin&で演算子を使用)。.ptr

なに?! Kotlin列挙型とは? 通常の Kotlin 列挙型?

はい、Kotlin/Native がを参照MyEnumすると、 も生成しMyEnumVarます。

char**にマップされているのに にマップされてCPointer<CPointerVar<ByteVar>>いないのはなぜCPointer<CPointer<Byte>>ですか?

CPointer<CPointer<Byte>>は不正です:CPointerの型パラメータは を拡張する必要がありCPointed、拡張ByteCPointer<T>ないでください。そして、それらを拡張する必要がある理由CPointedは、ポインターを逆参照すると左辺値 (アドレスを持つもの) が得られるからです!

https://docs.microsoft.com/en-us/cpp/c-language/l-value-and-r-value-expressionsまたはhttps://eli.thegreenplace.net/2011/12/15/understandingを参照してください。 -lvalues-and-rvalues-in-c-and-c/ C (および C++) の左辺値の詳細については。

于 2019-03-19T20:54:30.037 に答える