1

次の C 関数を検討してください。

#define INDICATE_SPECIAL_CASE -1
void prepare (long *length_or_indicator);
void execute ();

prepare 関数は、遅延long *出力変数へのポインタを格納するために使用されます。

C では次のように使用できます。

int main (void) {
    long length_or_indicator;
    prepare (&length_or_indicator);
    execute ();
    if (length_or_indicator == INDICATE_SPECIAL_CASE) {
        // do something to handle special case
    }
    else {
        long length = lengh_or_indicator;
        // do something to handle the normal case which has a length
    }
}

私はValaでこのようなことを達成しようとしています:

int main (void) {
    long length;
    long indicator;
    prepare (out length, out indicator);
    execute ();
    if (indicator == INDICATE_SPECIAL_CASE) {
        // do something to handle special case
    }
    else {
        // do something to handle the normal case which has a length
    }
}

Valaのバインディングをどのように記述しprepare ()ますか?INDICATE_SPECIAL_CASE

変数を 2 つに分割することは可能ですか?

(in )outへの呼び出しの後に変数が書き込まれているにもかかわらず、ポインターの使用を避けることは可能ですか?prepare ()execute ()

4

1 に答える 1