首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C语言的翻译阶段5和6中,空格什么时候有意义?

在C语言的翻译阶段5和6中,空格什么时候有意义?
EN

Stack Overflow用户
提问于 2015-08-07 09:47:06
回答 1查看 183关注 0票数 1

概括地说,标准中描述了第5-7阶段:

  1. 字符常量和字符串文本中的每个源字符集成员和转义序列被转换为执行字符集的对应成员;如果没有对应的成员,则将其转换为除空(宽)字符以外的实现定义的成员。7)
  2. 相邻的字符串文字标记被连接起来。
  3. 分隔标记的空白字符不再重要。每个预处理令牌被转换为令牌。生成的标记在语法和语义上进行分析,并作为翻译单元进行翻译。

现在我同意白人空间角色在第七阶段已经不再重要了,但是在第四阶段之后,人们就不能摆脱它们吗?有什么例子可以说明这会有什么不同吗?

当然,应该认识到,删除分隔令牌的空白字符在此阶段不起作用,因为第4阶段之后的数据由预处理令牌组成。这样做的目的是在早期消除分隔预处理标记的空格。

EN

回答 1

Stack Overflow用户

发布于 2015-08-07 10:11:01

考虑一下这个源代码

代码语言:javascript
复制
char* str = "some text"   " with spaces";

在第5阶段,这将转换为这些令牌(每行一个令牌):

代码语言:javascript
复制
char
*
str
=
"some text"    
" with spaces"

这里重要的是“一些文本”和“有空格”中的空格。

之后,令牌之间的所有空间(见上文)都被忽略。

如果在步骤5之前删除空格,则会得到其他字符串文本,如"sometext“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31874715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档