Successivo: Versione estensione GMP/MPFR, Su: Variabili dell'estensione API [Contenuti][Indice]
L’API fornisce sia un numero di versione “principale” che uno “secondario”. Le versioni dell’API sono disponibili al momento della compilazione, come definizioni per il preprocessore C, a supporto della compilazione condizionale, e come elencazione di costanti per facilitare il debug:
versione API | Definiz. Preprocessore C | Costante di elenco |
---|---|---|
Major | gawk_api_major_version | GAWK_API_MAJOR_VERSION |
Minor | gawk_api_minor_version | GAWK_API_MINOR_VERSION |
La versione secondaria aumenta quando nuove funzioni sono aggiunte all’API.
Tali nuove funzioni sono sempre aggiunte alla fine della struttura
struct
dell’API.
La versione principale aumenta (e la versione secondaria torna a zero) se qualche tipo di dati cambia dimensione o si modifica l’ordine dei campi, o se qualcuna delle funzioni esistenti cambia il livello di versione.
Può capitare che un’estensione sia stata compilata con una versione
dell’API ma caricata da una versione di gawk
che ne usa una
differente. Per questo motivo, la versione principale e quella secondaria
dell’API della versione in uso di gawk
sono incluse nella
struttura struct
dell’API come costanti intere in sola lettura:
api->major_version
La versione principale di gawk
in esecuzione.
api->minor_version
La versione secondaria di gawk
in esecuzione.
Dipende dall’estensione decidere se ci sono incompatibilità con l’API. Tipicamente, basta un controllo di questo tipo:
if ( api->major_version != GAWK_API_MAJOR_VERSION || api->minor_version < GAWK_API_MINOR_VERSION) { fprintf(stderr, "estensione_pippo: discordanza di versione \ con gawk!\n"); fprintf(stderr, "\tLa mia versione (%d, %d), versione gawk \ (%d, %d)\n", GAWK_API_MAJOR_VERSION, GAWK_API_MINOR_VERSION, api->major_version, api->minor_version); exit(1); }
Questo codice è incluso nella macro generica dl_load_func()
presente in gawkapi.h (trattata
in
Codice predefinito di interfaccia API).
Successivo: Versione estensione GMP/MPFR, Su: Variabili dell'estensione API [Contenuti][Indice]