6

Napotkaliśmy na dziwny problem z kompilatorem Visual Studio 2005.
W czasie kompilacji, zastępuje ten ciąg stałyKompilator C ??) zastępstwo

"... ,0x??)" 

z tego:

"... ,0x]" 

Ledwo nauczyłem próbując że następujące części zamienne są wykonywane:

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

Więc zgadnij, że to powinna być funkcja, a nie błąd.
Program Visual Studio 2010 tego nie robi.

Szkoda, że ​​nie można wyszukiwać w Google pod numerem ??(.
Pytanie jest następujące:

Czy możemy kontrolować to zachowanie za pomocą przełącznika kompilatora?

BTW: Jaki jest tego powód?

Odpowiedz

11

Są digrafów C i trójznaków: http://en.wikipedia.org/wiki/Digraphs_and_trigraphs

I tak, można je wyłączyć w visual studio: http://msdn.microsoft.com/en-us/library/ee462497.aspx

+1

digrafach nie ma tego problemu, ponieważ digrafów są alternatywne pisownie żetonów, niż alternatywny pisownia znaków. '" <: "' składa się z dwóch znaków (trzy jeśli policzymy końcowe '' \ 0'') – hvd

+2

Jestem pod wrażeniem. Wygląda na to, że przełącznik kompilatora '/ Zc' istnieje tylko w wersji VS 2010 i wyższej. Tak więc dla VS 2005 mamy problem. Ale domyśliłem się, że po prostu ucieczka z '?' Wykonuje zadanie: '\? \?)) – joe