C++ C编译器???)替换

C++ C编译器???)替换,c++,string,visual-studio,compiler-construction,string-literals,C++,String,Visual Studio,Compiler Construction,String Literals,Visual Studio 2005编译器遇到了一个奇怪的问题。 在编译时,它将替换此字符串常量 "... ,0x??)" 关于这一点: "... ,0x]" 通过尝试执行以下替换,我们几乎没有了解到: ??( -> [ ??) -> ] ??< -> { ??> -> } ??(->[ ??) -> ] ??< -> { ??> -> } 所以我想这应该是一个功能,而不是一个bug。 Visua

Visual Studio 2005编译器遇到了一个奇怪的问题。
在编译时,它将替换此字符串常量

"... ,0x??)"
关于这一点:

"... ,0x]"
通过尝试执行以下替换,我们几乎没有了解到:

??(   ->   [
??)   ->   ]
??<   ->   {
??>   ->   }
??(->[
??)   ->   ]
??<   ->   {
??>   ->   }
所以我想这应该是一个功能,而不是一个bug。
VisualStudio2010没有做到这一点

可惜你不能用谷歌搜索
?(

因此,问题是:

我们可以通过编译器开关控制此行为吗?


顺便问一下:这是什么原因?

这些是C有向图和三角图:


是的,您可以在visual studio中禁用它们:

有向图不会有这个问题,因为有向图是标记的替代拼写,而不是字符的替代拼写。
“我印象深刻。似乎
/Zc
编译器开关只存在于VS 2010和更高版本。因此对于VS 2005我们有一个问题。但我发现简单地转义
就可以了:
\?)