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

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

宏定义

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

//不带参数的宏定义
# 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"
# endif

int main() {
    //...
    return 0;
}


/**
* 测试 #if
*/

# include <stdio.h>

# define LETTER 1

int 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值