次の 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 ()