这是什么意思 \?逃避C语法?

时间:2014-06-30 06:53:13

标签: c escaping constants literals bnf

我正在阅读this并找到了逃生\?。究竟是什么意思逃脱了?字符串中的文字?(我仍然看不出原因)或者这是我不知道的BNF语法规则?

2 个答案:

答案 0 :(得分:2)

它指定一个文字问号。见http://en.wikipedia.org/wiki/Digraphs_and_trigraphs

反斜杠用作标记字符,告诉编译器/解释器下一个字符具有某些特殊含义。下一个字符意味着什么取决于实现。例如,C风格的语言使用\n表示换行符,\t表示标签符。

使用" escape"实际上意味着暂时逃避解析文本并进入另一种模式,其中后续角色的处理方式不同。

答案 1 :(得分:1)

它用于名为trigraphs的功能,它指定问号。使用此功能,您可以编写以问号开头的三字符序列来替换另一个字符

来自C11

  

C11§6.4.4.4字符常量第4节

     

双引号和问号?可以表示   它们本身或由转义序列分别为“和”,但是   单引号'和反斜杠\应分别表示,   通过转义序列\'和\。