第9章预处理命令
1 第9章 预处理命令
9.0编译预处理概述 C源程序编译之前,编译程序将对它作至少两 个阶段的编译预处理。 编译程序预处理阶段 编译程序首先将源程序代码中的注解替换成空 格字符;例如: int/变量sum用于存放两个数的和*sum; 将替换成: int sum 然后查找源代码中由续行符(反斜线后紧跟换行 符)组成的物理行,并把它们合并成一个逻辑行;例 如:
2 9.0 编译预处理概述 C源程序编译之前,编译程序将对它作至少两 个阶段的编译预处理。 编译程序预处理阶段 编译程序首先将源程序代码中的注解替换成空 格字符;例如: int /*变量sum用于存放两个数的和*/ sum ; 将替换成: int sum ; 然后,查找源代码中由续行符(反斜线后紧跟换行 符)组成的物理行,并把它们合并成一个逻辑行;例 如:
printf(“ That's wond erfu!”) 将合并成: printf ("Thats wonderful 最后,对源代码中的那些仅用空白字符作分隔符 的多个字符串直接量进行连接。例如: printf(“ A string is a sequence of characters” “ surrounded by” “ double quotes.”) 将连接成: printf ("a string is a sequence of characters surrounded by double quotes. )i
3 printf ( “That’s wond\ erful!” ) ; 将合并成: printf ( “That’s wonderful!” ) ; 最后,对源代码中的那些仅用空白字符作分隔符 的多个字符串直接量进行连接。例如: printf ( “A string is a sequence of characters” “surrounded by” “double quotes.” ) ; 将连接成: printf ( “A string is a sequence of characters surrounded by double quotes.” ) ;
预处理程序预处理阶段 C源程序中像# define、# include…等这类特 别代码: 称之为“预处理命令”,一共有三类 (1)宏定义命令 (2)文件包含命令 (3)条件编译命令 ■它们由C语言预处理程序解释 ■不是C语言本身的语言成分,它们有自己的独 立语法:
4 预处理程序预处理阶段 C源程序中像#define、 #include…..等这类特 别代码: 称之为“预处理命令” , 一共有三类: (1) 宏定义命令 (2) 文件包含命令 (3) 条件编译命令 它们由C语言预处理程序 解释 不是C语言本身的语言成分,它们有自己的独 立语法:
一条预处理指令写在一行上(逻辑行 预处理命令行可插入在源程序文件中的任何行中。 必须以#号开头,预处理命令的内容跟在#号之后, 允许在#号的前后插入若干(至少一个)空格或制表 符。(注:允许仅由单一的#号组成的空预处理命令行 空预处理指令行没有作用,处理时总被忽略)。 ■预处理命令的作用域是从该行所在位置起到它所 在的源文件的未尾 新行(回车换行符)字符作为行结束符
5 一条预处理指令写在一行上(逻辑行) 预处理命令行可插入在源程序文件中的任何行中。 必须以#号开头,预处理命令的内容跟在#号之后, 允许在#号的前后插入若干(至少一个)空格或制表 符。(注:允许仅由单一的#号组成的空预处理命令行, 空预处理指令行没有作用,处理时总被忽略)。 预处理命令的作用域是从该行所在位置起到它所 在的源文件的末尾。 新行(回车换行符)字符作为行结束符