4

マニュアルから:

変数のアドレスを取得できますが、let ステートメントで宣言された変数には使用できません。

これは安全を確保するために行われていることを理解しています。さて、const からアドレスをどうしても取得したい場合、回避策はありますか?

4

1 に答える 1

6

const には実際にはアドレスがなく、どこにも格納されていない可能性があります。この小さなプログラムを見て、中間の C ソース コードで何が起こるか見てみましょう。

const x = 10
echo x
echo x + 1

関連する C コードは次のようになります。

STRING_LITERAL(TMP5, "10", 2);
STRING_LITERAL(TMP6, "11", 2);

NIM_EXTERNC N_NOINLINE(void, xInit)(void) {
    printf("%s\012", ((NimStringDesc*) &TMP5)? (((NimStringDesc*) &TMP5))->data:"nil");
    printf("%s\012", ((NimStringDesc*) &TMP6)? (((NimStringDesc*) &TMP6))->data:"nil");
}

したがって、計算は実際にはコンパイル時に行われ、最終的な文字列echoは int の代わりにプログラムに格納されxます。

于 2015-05-06T23:22:40.850 に答える