预处理器的小结

来源:互联网 发布:php ip白名单 编辑:程序博客网 时间:2024/06/02 03:58

1.对程序作预处理前,编译器会对它进行几次翻译处理。
   。首先把源代码中出现的字符映射到源字符集。
   。编译器查找反斜线后紧跟换行符的实例并删除这些实例。
   。编译器将文本划分成预处理的预言符号序列和空白字符及注释序列。注意的一点是编译器用一个空白字符代替每一个注释。
2.预处理器不进行计算,它只是按照指令进行文字替换操作。
3.宏常量可以用来指定标准数组的大小并作为const值得初始化值。(以下只限在c中,不限在c++中)
   。#define LIMIT 20
   。const int LIM=50;
   。static int data1[LIMIT];//合法
   。static int data2[LIM];  //无效
   。const int LIM2=2*LIMIT;//合法
   。const int LIM3=2*LIM;   //无效
4.在处理主体中的多个空格时,字符型字符串和语言符号类型字符串采用不同的方法。用字符型字符串的观点来看,空格也是主体的一部分;而用语言符号类型字符串的观点看,空格只是分割主体中语言符号的符号。
5.程序运行时,函数调用把参数的值传递给函数。而编译前,宏调用把参数的语言符号传递给程序。
6.在宏中最好不要使用增量或减量运算符。
7.在类函数宏的替换部分中,#符号用作一个预处理运算符,可以把语言符号转换成字符串;##运算符把两个语言符号组合成单个语言符号。
8.头文件stdvar.h提供了创建用户自定义的带可变数量参数的函数的工具。
9.宏与函数之间的选择实际上是时间与空间上的权衡,宏产生内联代码。
0 0
原创粉丝点击