Condividi tramite


Tipizzazione avanzata

C è un linguaggio tipizzato in modo debole, ovvero il compilatore consente operazioni come l'assegnazione e il confronto tra variabili di tipi diversi. Ad esempio, C consente il cast del valore di una variabile a un altro tipo. La possibilità di usare variabili di tipi diversi nella stessa espressione promuove la flessibilità e l'efficienza.

Un linguaggio fortemente tipizzato impone restrizioni alle operazioni tra variabili di tipi diversi. In questi casi, il compilatore genera un errore che impedisce l'operazione. Queste linee guida rigorose sui tipi di dati sono progettate per evitare potenziali errori.

La difficoltà con l'uso di un linguaggio tipizzato debole, ad esempio C per le chiamate di procedura remota, consiste nel fatto che le applicazioni distribuite possono essere eseguite in diversi computer con compilatori C diversi e architetture diverse. Quando un'applicazione viene eseguita in un solo computer, non è necessario preoccuparsi del formato dati interno perché i dati vengono gestiti in modo coerente. Tuttavia, in un ambiente di calcolo distribuito, i computer diversi possono usare definizioni diverse per i tipi di dati di base. Ad esempio, alcuni computer definiscono il tipo int , quindi la relativa rappresentazione interna è a 16 bit, mentre altri computer usano 32 bit. Un'architettura del computer, nota come "little endian", assegna il byte meno significativo dei dati all'indirizzo di memoria più basso e il byte più significativo all'indirizzo più alto. Un'altra architettura, nota come "big endian", assegna il byte meno significativo all'indirizzo di memoria più alto associato a tali dati.

Le chiamate di procedura remota richiedono un controllo rigoroso sui tipi di parametro. Per gestire la trasmissione e la conversione dei dati in rete, MIDL applica rigorosamente restrizioni di tipo per i dati trasferiti in rete. Per questo motivo, MIDL include un set di tipi di base ben definiti. MIDL impone la digitazione avanzata imponendo l'uso di parole chiave che definiscono in modo univoco le dimensioni e il tipo di dati. L'effetto più visibile della digitazione avanzata è che MIDL non consente variabili del tipo void *.

Negli argomenti seguenti questa sezione illustra le funzionalità del linguaggio MIDL che applicano la digitazione avanzata dei dati: