当前位置: 首页 > java >正文

【C语言】程序的预处理,#define详解

一、预定义符号

二、#define 

1.#define定义标识符

#define + 自定义名称 + 代替的内容

例:

#define MAX 100

#define CASE break;case

#define CASE break;caseint main()
{int n = 0;switch (n){case 1:CASE 2:CASE 3:CASE 4:}return 0;
}

这里的CASE 代替了 break;case  为了避免break的遗忘

2.#define定义宏

#define MAX(x,y) ((x)>(y)?(x):(y))
#define M 2int main()
{int m = MAX(M, 3);return 0;
}

3.#define 的替换规则

4.#和##的应用 

使用#,把一个宏参数变成对应字符串

#define PRINT(formate,x) printf("the value of "#x" is "formate"\n",x)int main()
{int a = 10;PRINT("%d", a);float c = 3.14f;PRINT("%f", c);return 0;
}


##把位于两边的符号合成一个符号

#define CAT(x,y) x##y
int main()
{int ab = 2025;printf("%d\n", CAT(a, b));return 0;
}

输出:2025

5.宏与函数相比

(1)宏的优点:

(2)宏的缺点: 

    

 三、#undef

用于移除一个宏定义

例:#undef MAX

四、条件编译

1.进行选择性的编译代码

# if  常量表达式

#elif 常量表达式

#else

……

#endif

#define M 5
int main()
{
#if M==1;printf("hehe\n");
#elif M==5;printf("haha\n");
#elseprintf("heihei\n");
#endifreturn 0;
}

输出:haha

2.判断是否被定义

#define MAX 100int main()
{
#if defined(MAX);//也可以写成
//#ifdef(MAX);printf("haha\n");
#endifreturn 0;
}

输出:haha

3.解决头文件被多次包含问题

两种方法来解决

//方法一
#ifndef __TEST_H__
#define __TEST_H__
//头文件内容
#endif //方法二
#pragma once

五、预处理指令

http://www.xdnf.cn/news/5478.html

相关文章:

  • 用于文件上传的MultipartFile接口
  • Go语言实现优雅关机和重启的示例
  • 自然语言处理 (NLP) 入门:NLTK 与 SpaCy 的初体验
  • 『 测试 』测试基础
  • nanodet配置文件分析
  • 快速理解动态代理
  • 锚定基础与拥抱融合:C 语言在编程教育与技术社区的破圈之路
  • 长短期记忆网络(LSTM)深度解析:从理论到实践的全方位指南
  • 初探函数使用
  • L1 第9次课 数组进阶
  • 大数据从专家到小白
  • MCP 通信机制:stdio vs SSE
  • 项目过程中使用vant组件使用踩坑记录
  • 【Bootstrap V4系列】学习入门教程之 组件-媒体对象(Media object)
  • Nginx的增强与可视化!OpenResty Manager - 现代化UI+高性能反向代理+安全防护
  • 无人甘蔗小车履带式底盘行走系统的研究
  • 语音合成之十三 中文文本归一化在现代语音合成系统中的应用与实践
  • 【Java学习笔记】instanceof操作符
  • 隐式/显式类型转换?编程语言的类型转换?其它类型转换成数值类型?其它类型转换成字符串?类型转换?
  • 【和春笋一起学C++】数组名作为函数参数实例
  • STM32f103 标准库 零基础学习之按键点灯(不涉及中断)
  • vim配置代码文档格式化
  • Http2多路复用的静态表和动态表
  • CSS专题之自定义属性
  • 记录学习《手动学习深度学习》这本书的笔记(十一)
  • Docker:安装配置教程(最新版本)
  • 元组类型的特性与应用场景:深入理解元组在 TypeScript 中的使用
  • Python训练营打卡DAY22
  • LVGL(lv_label实战)
  • 《设计模式之禅》笔记