C语言基础(十)- 预处理

来源:互联网 发布:电脑硬盘加密软件 编辑:程序博客网 时间:2024/05/29 12:29

预处理就是在编译之前所做的事情,所以也叫预编译,主要有宏定义、文件包含处理和条件编译。

宏定义

宏定义指令是指用一个指定的标识符代表一个字符串,可以减少程序中重复书写某些字符串的工作量,使用宏可以达到“一改全改”的代码规范。
宏定义主要分为不带参数的宏定义 和 带参数的宏定义。

//不带参数的宏定义# define N 10# define PI 3.14# define R 2*N*N//带参数的宏定义# define S(a,b) a*b  //程序中出现的S(a,b)与a*b等价/*** 宏定义测试*/# include <stdio.h># define PI 3.14# define CIRCLE(R,L,S) L=2*PI*R;S=PI*R*R;int main() {    float r = 10;    float l,s;    CIRCLE(r, l, s);    printf("圆的周长和面积为:%lf,%lf\n", l, s);    return 0;}//正常情况下宏的作用范围从定义开始到文件结束//使用#undef命令可以提前取消宏定义# undef N# undef PI# undef CIRCLE(R,L,S) 


文件包含处理

文件包含处理的说明:

  • 一个 #include 命令只能包含一个被包含的文件,如果要包含n个文件,要用n个 #include 指令
  • 如果文件1包含文件2,而在文件2中要用到文件3的内容,那么在file1.cpp中对包含文件出现的顺序为 #include
ctype.h     包含测试字符的函数local.h     包含地区化的函数math.h      包含数学函数string.h    包含字符串函数stdio.h     包含标准输入输出函数stdlib.h    包含常用的系统函数time.h      包含时间和日期函数signal.h    包含信号有关的函数malloc.h    包含动态内存函数

条件编译

  • #ifdef //如果已定义宏
  • #ifndef //如果未定义宏
  • #if //当比爱哦大师为真时就编译程序段1,否则就编译程序段2
/*** 测试 #ifdef/#ifndef*/# define CHINESE 1# ifdef CHINESE# include "chinese.h"# else# include "english.h"# endifint main() {    //...    return 0;}/*** 测试 #if*/# include <stdio.h># define LETTER 1int main() {    char c, str[] = "I love C Language!";    int i = 0;    while ((c=str[i])!='\0') {        i++;        #if LETTER        if (c>='a' && c<='z') {            c = c-32;        }        #else        if (c>='A' && c<='Z') {            c = c+32;        }        #endif        printf("%c", c);    }    printf("\n");    return 0;}
0 0