Trigrammi

Il set di caratteri di origine dei programmi di origine C è contenuto nel set di caratteri ASCII a 7 bit, ma è un superset del set di codice invariante ISO 646-1983. Le sequenze di trigramma consentono la scrittura di programmi C utilizzando solo il set di codice invariante ISO (International Standards Organization). I trigrammi sono sequenze di tre caratteri (introdotti da due punti interrogativi consecutivi) che il compilatore sostituisce con i relativi caratteri di punteggiatura corrispondenti. È possibile utilizzare i trigrammi in file di origine C con un set di caratteri che non contiene rappresentazioni grafiche adeguate per alcuni caratteri di punteggiatura.

C + + 17 rimuove i trigrammi dal linguaggio. Le implementazioni possono continuare a supportare trigrafi come parte del mapping definito dall'implementazione dal file di origine fisico al set di caratteri di origine di base, anche se lo standard incoraggia le implementazioni non a farlo. Tramite C++ 14, i trigrammi sono supportati come in C.

Visual C++ continua a supportare la sostituzione trigrafo, ma è disabilitata per impostazione predefinita. Per informazioni su come abilitare la sostituzione del trigrafo, vedere /Zc:trigraphs (Sostituzione Trigraphs).

Nella tabella seguente sono illustrate le nove sequenze di trigramma. Tutte le occorrenze in un file di origine dei caratteri di punteggiatura nella prima colonna vengono sostituite con il carattere corrispondente nella seconda colonna.

Sequenze di trigramma

Trigramma Carattere di punteggiatura.
??= #
??( [
??/ \
??) ]
??' ^
??< {
??! |
??> }
??- ~

Un trigramma è sempre considerato come un singolo carattere di origine. La conversione dei trigrammi avviene nella prima fase di conversione, prima del riconoscimento dei caratteri di escape nei valori letterali stringa e nelle costanti carattere. Sono riconosciuti solo i nove trigrammi riportati nella tabella precedente. Tutte le altre sequenze di caratteri non vengono convertite.

La sequenza di escape dei caratteri, \?, impedisce l'interpretazione errata delle sequenze di caratteri trigraph-like. Per informazioni sulle sequenze di escape, vedere Sequenze di escape. Ad esempio, se si tenta di stampare la stringa What??! con questa printf istruzione

printf( "What??!\n" );

la stringa stampata sarà What| poiché ??! è una sequenza di trigramma che viene sostituita con il carattere |. Scrivere l'istruzione come riportata di seguito per stampare correttamente la stringa:

printf( "What?\?!\n" );

In questa istruzione printf un carattere di escape barra rovesciata prima del secondo punto interrogativo impedisce l'errata interpretazione di ??! come trigramma.

Vedi anche

/Zc:trigraphs (Sostituzione trigrafi)
Identificatori C