允许`?`被转义的理由是什么?

Luc*_*ore 14 c++ language-design language-lawyer

2.13.2/3开始

双引号"和问号?可以表示为它们自己或由转义序列\"\?[...]表示.

简单地说,以下内容:

char x = '\?'; //or '\"'
char y = '?';  //or '"'
Run Code Online (Sandbox Code Playgroud)

代表相同的角色.为什么对待这两个(特别是?)与其他角色不同?

Ste*_*sop 24

\"给出了单引号字符文字和双引号字符串(他们定义为使用相同的转义序列,结果之间的一致性\'\"可在两个使用).我有点猜测,但我认为委员会只是认为在每个中定义不同的逃逸序列太麻烦了,没有任何好处,可以说是轻微的损害.

\?是为了避免三角形:??=是三字形,?\?=不是.

  • \?确实与trigraphs有关,请参阅http://msdn.microsoft.com/en-us/library/bt0y4awe.aspx以获得解释. (2认同)