Differenze tra le versioni di "Scrivere una libreria esterna che ritorna un Vettore di tipo char"

Da Gambas-it.org - Wikipedia.
Riga 20: Riga 20:
  
 
Codice Gambas:
 
Codice Gambas:
 +
Se la libreria esterna in C ritorna un vettore di tipo "''char''", allora in Gambas esso verrà recuperato e rappresentato da una variabile di tipo ''Puntatore'', che andrà poi dereferenziato al fine di recuperare i valori passati.
 
  Library "/tmp/libprovaC"
 
  Library "/tmp/libprovaC"
 
  Private Extern prova() As Pointer
 
  Private Extern prova() As Pointer

Versione delle 03:57, 11 mar 2014

Di seguito è mostrato un esempio, nel quale la funzione esterna della libreria in C ritorna un Vettore di tipo "char".


Codice della libreria esterna in C:

char a[4];


char *prova() {

   a[0] = 'p';   // assegna un carattere per ciascun elemento del vettore di tipo "chr"
   a[1] = 'e';
   a[2] = 'r';
   a[3] = 'a';

   return a;   // ritorna l'indirizzo del vettore "a"

}


Codice Gambas: Se la libreria esterna in C ritorna un vettore di tipo "char", allora in Gambas esso verrà recuperato e rappresentato da una variabile di tipo Puntatore, che andrà poi dereferenziato al fine di recuperare i valori passati.

Library "/tmp/libprovaC"
Private Extern prova() As Pointer


Public Sub Main()

 Dim p As Pointer

 Shell "gcc -o /tmp/libprovaC.so " & Application.Path & "/libprovaC.c -shared -fPIC" Wait

 p = prova()

 Print string@(p)

End