【C语言】总结C/C++中的预处理 | 关键字define | 宏定义 | 带参宏

文件操作,预处理

一. 什么是预处理

代码执行之前的事情,命令以#开头

二. 常见的预处理

头文件

三. #define

是C语言的宏定义,本质是替换,会在预处理阶段对程序中所有出现的"宏名"的地方进行替换

一 宏替换
1.定义

#define 宏名 内容

#define PI 3.14159 //定义PI为3.14159 相当于给常量起名
#define NUM 3+1
int main(){
    int n = NUM * NUM;      //拆解 : 3 + 1 * 3 + 1 
    printf("n = %d\n", n);  //结果 : 7
    return 0;
}
二 带参宏
  1. 定义

#define 宏名(形参列表) 内容

#define ADD(a,b) a+b
  1. 举例
#include <stdio.h>

// #define 宏名(形参列表) 内容
#define ADD(a,b) a+b
#define ADD1(a,b) (a+b)
// 注意:没有参数类型 没有返回值 本质:替换
int main()
{                                       // 拆解: n = a + b ;
int n = ADD(1,2);                       // 拆解: 1 + 2
printf("n = %d\n", n);                  // 结果: 3
n = ADD(1, ADD(5, 6))*ADD(3, 4);        // 拆解: 1 + 5 + 6 * 3 + 4
printf("n = %d\n", n);                  // 结果: 28
n = ADD1(1, ADD1(5, 6))*ADD1(3, 4);     // 拆解: ( 1 + (5 + 6) ) * (3 + 4)
printf("n = %d\n", n);                  // 结果: 84
double d = ADD(1.223, 2.456);           // 拆解: 1.223 + 2.456
printf("d = %lf\n", d);                 // 结果: 3.679000
return 0;
}

四 预编译条件

一 #ifdef 宏名
语法:
#ifdef 宏名
    代码块;
#endif
规则:

根据宏名是否定义,如果定义了,就会执行代码块直到endif,否则不执行代码块

举例:
#include <stdio.h>

#define def_1 1;            // 宏定义 def_1

int main()
{
    #ifdef AAA            // 判断 def_1 宏名以被定义 执行代码块内容
    printf("宏名以被定义\n");
    #endif // AAA         // 结束宏判断
    
    return 0;
}

#include<stdio.h>

#define def_1 1                   // 宏定义 def_1

int main() {
                                 
#ifdef def_1                      // 判断是否定义宏名 def_1
	printf("以定义宏名 def_1");     // 结果
#else
	printf("未定义宏名 def_1");
#endif
	return 0;
}
二 #ifndef 宏名
语法
#ifndef 宏名
    代码块;
#else
    代码块;
#endif
规则: ( 与 ifdef 类似且相反 )

根据宏名是否定义,如果没有定义,就会执行相对代码直到endif,否则不执行代码块

举例:
#include<stdio.h>

#define def_1 1                    // 宏定义 def_1

int main() {

#ifndef def_1                      // 判断是否定义宏名 def_1
	printf("未定义宏名 def_1");
#else
	printf("以定义宏名 def_1");      // 结果
#endif
	return 0;
}
常用事件:

令某代码永远只执行一次:

#ifndef def_1
#define def_1
     //代码块
#endif
三 #if 表达式
语法:
#if(表达式)
// 代码块1;
#else
// 代码块2;
#endif
规则:

如果表达式为真 , 执行代码块 1 ,否则执行代码块 2.

举例:
#include <stdio.h>

int main() {
    
#if(1)
	printf("yes\n");
#else
	printf("no\n");
#endif
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MuShan-bit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值