Pytanie Vala! Fajnie!
Vala ma użyteczną opcję -C
, która pozwala rzucić okiem na generowany kod C. Funkcja ta, na przykład ...
int[] GetNumbers() {
return new int[] {1,2,3};
}
... kiedy zestawiane z ...
valac -C -c test.vala
... ujawni poniższy kod C (w test.c
) ...
gint* GetNumbers (int* result_length1) {
gint* result = NULL;
gint* _tmp0_ = NULL;
gint* _tmp1_;
result = (_tmp1_ = (_tmp0_ = g_new0 (gint, 3), _tmp0_[0] = 1, _tmp0_[1] = 2, _tmp0_[2] = 3, _tmp0_), *result_length1 = 3, _tmp1_);
return result;
}
Uwaga na g_new0
; więc tak, chcesz g_free
to.
Nawet jeśli przechodzisz do pliku nagłówkowego i nie możesz sobie pozwolić na obejrzenie każdej implementacji, wygląda na to, że obowiązują te same zasady, co w C: jeśli nie jest to const
, zwolnij.