gpt4 book ai didi

c - 为什么预处理器不将回车符视为空白字符

转载 作者:太空狗 更新时间:2023-10-29 16:00:54 25 4
gpt4 key购买 nike

在 C 标准的 6.4 Lexical elements 部分中写有

  1. ... Preprocessing tokens can be separated by white space; this consists of comments (described later), or white-space characters (space, horizontal tab, new-line, vertical tab, and form-feed), or both.

可以看出,回车符不包括在空白字符的概念中。

另一方面,在标准 C 函数 isspace 的描述中写有 (7.4.1.10 The isspace function)

  1. ...The standard white-space characters are the following: space (''), form feed ('\f'), new-line ('\n'), carriage return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). In the "C" locale, isspace returns true only for the standard white-space characters.

是否有意在描述预处理的部分中未提及回车符,如果是,原因是什么?

还是只是标准的缺陷?

同样的问题也适用于 C++ 标准。

最佳答案

参见 N1570 5.2.1 第 3 段。

回车符是基本执行字符集的成员(isspace() 将其视为空白字符),但它不是基本源字符集的一部分。

源和执行的基本字符集都包括“空格字符,以及表示水平制表符、垂直制表符和换页符的控制字符”。另外,“在基本的执行字符集中,应该有表示alert、backspace、carriage return、new line的控制字符”。

在某些系统上,回车符是行尾指示的一部分;任何此类指示都被视为单个换行符。源文件中属于行尾指示符的回车符会导致未定义的行为。

关于c - 为什么预处理器不将回车符视为空白字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43147896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com