C编译器??)替换

joe*_*joe 6 c++ compiler-construction string string-literals visual-studio

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

"... ,0x??)"
Run Code Online (Sandbox Code Playgroud)

这一个:

"... ,0x]"
Run Code Online (Sandbox Code Playgroud)

我们几乎没有通过尝试执行以下替换来学习:

??(   ->   [
??)   ->   ]
??<   ->   {
??>   ->   }
Run Code Online (Sandbox Code Playgroud)

所以我想这应该是一个功能,而不是一个bug.
Visual Studio 2010不会这样做.

太糟糕了,你不能用谷歌搜索??(.
所以问题是:

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

顺便说一句:这是什么原因?

Gui*_*ume 11

这些是C有向图和三角形:http://en.wikipedia.org/wiki/Digraphs_and_trigraphs

是的,你可以在visual studio中禁用它们:http://msdn.microsoft.com/en-us/library/ee462497.aspx

  • 我印象深刻.似乎`/ Zc`编译器开关仅存在于VS 2010及更高版本.所以对于VS 2005我们有一个问题.但我发现只是逃避`?`做的工作:`\?\?)` (2认同)