Differenze tra le versioni di "Passare a una funzione esterna un Puntatore che successivamente deve essere passato anche ad altre funzioni esterne"

Da Gambas-it.org - Wikipedia.
 
Riga 3: Riga 3:
 
Un esempio ne è la dichiarazione del primo parametro ''formale'' della funzione esterna di ALSA "snd_seq_open()":
 
Un esempio ne è la dichiarazione del primo parametro ''formale'' della funzione esterna di ALSA "snd_seq_open()":
 
  int snd_seq_open (snd_seq_t **handle, const char *name, int streams, int mode)
 
  int snd_seq_open (snd_seq_t **handle, const char *name, int streams, int mode)
che in Gambas sarà così dichiarata:
+
che in un codice in linguaggio C sarebbe così utilizzata concretamente:
 +
snd_seq_open(<FONT Color=#B22222>&</font>ptr,...etc...);
 +
in Gambas sarà così dichiarata:
 
  Private Extern snd_seq_open(<FONT Color=#B22222>handle As <B>Pointer</b></font>, ...etc...) As Integer
 
  Private Extern snd_seq_open(<FONT Color=#B22222>handle As <B>Pointer</b></font>, ...etc...) As Integer
 
e quindi così utilizzata:
 
e quindi così utilizzata:

Versione attuale delle 09:26, 13 ott 2022

Se un parameto formale di una funzione esterna è definito come variabile di tipo Puntatore di Puntatore, affinché detta variabile deve essere mantenuta e passata ad altre funzioni esterne del codice, allora in Gambas tale parametro verrà dichiarato come Puntatore e poi nell'utilizzo concreto all'interno delle routine verrà passato preliminarmente alla funzione "VarPtr()".

Un esempio ne è la dichiarazione del primo parametro formale della funzione esterna di ALSA "snd_seq_open()":

int snd_seq_open (snd_seq_t **handle, const char *name, int streams, int mode)

che in un codice in linguaggio C sarebbe così utilizzata concretamente:

snd_seq_open(&ptr,...etc...);

in Gambas sarà così dichiarata:

Private Extern snd_seq_open(handle As Pointer, ...etc...) As Integer

e quindi così utilizzata:

Dim ptr As Pointer

snd_seq_open(VarPtr(ptr), ...etc...)