C语言核心技术笔记(一)
C语言核心技术(原书第2版)彼得·普林茨(Peter Prinz)托尼·克劳福德(Tony Crawford).
地址: https://www.amazon.cn/gp/product/B07B8DQXTD/ref=ppx_yo_dt_b_d_asin_title_o01?ie=UTF8&psc=1
第一章
-
C 编译器 提供 了 预定 义 标识符__ func__( 注意 这里 有 4 个 下划线 字符)。 可以 在任 何 函数 中 使用 它来 获取 包含 该 函数 名 的 字符串 字面 量。 这一点 对于 日志( log) 或 调试( debug) 输出 很有 帮助。
-
编译器 必须 至少 识别 函数 名 和 全局 变量 名 标识符( 具有 外部 链接 的 标识符) 的 前 31 个 字符, 而 其他 标识符 则 至少 识别 前 63 个 字符。
-
标签的作用域总是在标签所处的函数体内,即使其在某个嵌套语句块内。(常用于goto)
-
标识符的作用域通常从声明之后开始,但是结构、联合、枚举的类型名称,以及枚举常量中的名称是例外。当它们出现在声明中时,其作用域即开始,因此可以在声明中被本身再次引用。(可以用来解释结构体指针,以及一些递归定义的合法性)
-
预处理命令(如宏定义)可以跨越多行需要在前一行的最后使用反斜线符紧跟换行符,因为预处理器会将两者都删除。而行尾字符被视为预处理器命令的终止。
-
任何一个不完全为空的源码文件必须以一个换行符为结尾。每个注释都被看做是一个空格。
-
将源代码文件解析成标记过程中,编译器(或预处理器)总是采用如下原则: 每个连续的非空格符必须附加到正在读取的标记后面,直到出现附加后使得原有效标记变为无效为止。(如 a+++b 被解释成 a ++ + b, 因为 a+是无效的,++ 是有效的,&#