Differenze tra le versioni di "Scrivere una libreria esterna che chiama funzioni esterne puntate contenute in un Vettore"
Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Una libreria esterna appositamente può essere scritta per utilizzare due o più funzioni esterne puntate da un ''Puntatore'' contenute in un ''Vettore''. Nel seguente esemp...') |
|||
Riga 6: | Riga 6: | ||
<FONT color=gray>/* Vettore di Puntatori a Funzione */</font> | <FONT color=gray>/* Vettore di Puntatori a Funzione */</font> | ||
− | void (*vettore[2])() = {fun1, fun2}; | + | <FONT color=B22222>void (*vettore[2])() = {fun1, fun2}</font>; |
Riga 30: | Riga 30: | ||
void Chiamata_Funzione(int i, int n) { | void Chiamata_Funzione(int i, int n) { | ||
− | (*vettore[i])(n); | + | <FONT color=B22222>(*vettore[i])(n)</font>; |
} | } |
Versione delle 20:39, 16 mag 2014
Una libreria esterna appositamente può essere scritta per utilizzare due o più funzioni esterne puntate da un Puntatore contenute in un Vettore.
Nel seguente esempio abbiamo un codice sorgente in linguaggio C, che chiameremo "sorgente_C.c", nel quale sono presenti due o più funzioni da utilizzare, puntate ciascuna da un Vettore del tipo Puntatore a Funzione:
void fun1(int), fun2(int); /* Vettore di Puntatori a Funzione */ void (*vettore[2])() = {fun1, fun2}; void fun1(int i) { printf("--->%d\n", i * 10); } void fun2(int i) { printf("--->%d\n", i + 10); }
La libreria esterna, da noi scritta e che chiameremo libadhoc.c, sarà la seguente:
#include <stdio.h> #include "/percorso/del/file/sorgente_C.c" void Chiamata_Funzione(int i, int n) { (*vettore[i])(n); }
Il codice sorgente della libreria esterna, da noi scritta, verrà posto nella cartella Dati del progetto Gambas.
L'applicativo Gambas sarà invece il seguente:
Private Extern Chiamata_Funzione(fI As Integer, vI As Integer) In "/tmp/libadhoc" Public Sub Main() ' Genera la libreria esterna condivisa da noi scritta: Shell "gcc -o /tmp/libadhoc.so " & Application.Path &/ "libadhoc.c -shared -fPIC" Wait Chiamata_Funzione(1, 80) End