预处理

来源:互联网 发布:网络语233是什么意思 编辑:程序博客网 时间:2024/06/02 06:23
  1. 预处理:是指在进行编译的第一遍(词法扫描和语法分析)扫描前的工作;
    预处理是C语言的一个重要功能,它由预处理程序负责完成;
    当编译一个程序时,系统自动调用预处理程序对程序中的“#”号开头的预处理部分进行处理,处理完毕后进入源程序编译阶段;

    在C语言处理中,允许用一个标识符表示一串符号,称为宏;被宏定义的标识符称为宏名;
    在编译预处理时,对程序中所有出现的宏名,都用宏定义中的符号去替换,这称为宏替换;

    宏定义:用户自己编写宏定义;
    宏定义由源程序中的宏定义#define 语句完成的,而宏替换由预定义程序自动完成;

#inlcude <stdio.h>#define M (y+3)int main(){    int s,y;    printf("input a number:");    scanf("%d",&y);    s=5*M;    printf("s=%d\n",s);    return 0;}

上述程序中首先进行宏定义,定义M为表达式“(y+3)”,在“s=5*M”中作了宏调用,在预处理时经宏展开后该句变为
s=5*(y+3)

注意:
1. 宏定义用宏名来表示一串符号,在宏展开又以该符号取代了宏名,这只是一种简单的替换,符号串可是任何字符,预处理程序对它不进行任何检查。
2.宏定义不是声明或语句,在行末不必加分号;
3.作用域包括从宏定义命名道结束,如要终止其作用域可使用#underf取消宏作用域;
4.宏名如果在源程序中若有引号括起来,则预处理程序不对其进行宏替换;

`2.无参宏定义 #define 标识符 字符串 其中 :#表示这是一条预处理命令,凡是#开头的均为预处理命令 define 为宏定义命令 标识符为所定义的宏名 字符串可以是常数 表达式 格式串等