6

Abbiamo affrontato uno strano problema con il compilatore Visual Studio 2005.
Al momento della compilazione, sostituisce questa stringa costanteC compilatore ??) sostituzione

"... ,0x??)" 

con questo:

"... ,0x]" 

Abbiamo appena appreso provando che le seguenti sostituzioni vengono eseguiti:

??( -> [ 
??) -> ] 
??< -> { 
??> -> } 
Così

I Immagino che questa dovrebbe essere una caratteristica, non un bug.
Visual Studio 2010 non lo fa.

Peccato che non sia possibile cercare con Google per ??(.
Quindi la domanda è:

Possiamo controllare questo comportamento da un interruttore del compilatore?

BTW: Qual è la ragione di questo?

risposta

11

Quelli sono C digrammi e trigrammi: http://en.wikipedia.org/wiki/Digraphs_and_trigraphs

E sì, è possibile disattivarli in Visual Studio: http://msdn.microsoft.com/en-us/library/ee462497.aspx

+1

Digraphs non hanno questo problema, come digrammi sono varianti prese in considerazione gettoni, piuttosto che si alternano ortografie di personaggi. '" <: "' consiste di due caratteri (tre se si considera il trailing ''\ 0'') – hvd

+2

Sono impressionato. Sembra che lo switch del compilatore '/ Zc' esista solo su VS 2010 e versioni successive. Quindi per VS 2005 abbiamo un problema. Ma ho capito che semplicemente sfuggire il '?' Fa il lavoro: '\? \?)' – joe