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

【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

五、预处理指令

相关文章:

  • Vue.js 页面切换空白与刷新 404 问题深度解析
  • C++开发过程中的注意事项详解
  • 基于Qt的app开发第七天
  • 【软件测试】基于项目驱动的功能测试报告(持续更新)
  • 双向循环神经网络(Bi-RNN)详解
  • 1688 开放平台接口对接实战:商品实时数据采集 API 开发全流程
  • 了解窗口系统
  • 无需大规模重训练!GraspCorrect:VLM赋能机器人抓取校正,抓取成功率提升18.3%
  • MySQL InnoDB 表空间详解
  • Python Cookbook-7.10 在 MySQL 数据库中储存 BLOB
  • C/C++复习--C语言的数组
  • Android架构模式推荐及分析和MVC架构模式制作一个简单的底部tab切换
  • 【面板数据】省级农业及农村现代化指标数据(2011-2022年)
  • 架构进阶:74页数据架构设计总体规划方案【附全文阅读】
  • FastAPI实现JWT校验的完整指南
  • 前端浏览器判断设备类型的方法
  • Babel 深度解析:现代 JavaScript 开发的桥梁
  • LangChain 使用指南与原理
  • 滑动窗口:穿越数据的时光机
  • TypeScript 中的泛型工具详解
  • 中医的千年传承:网络科学描绘其演化之路|PNAS速递
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • 举牌代跳明码标价、留言不堪入目,未成年人擦边短视频成引流利器
  • 西藏日喀则市拉孜县发生5.5级地震,震源深度10千米
  • 法院就“行人相撞案”道歉:执法公正,普法莫拉开“距离”
  • 为发期刊,高校学者偷贩涉密敏感数据!国安部披露间谍案细节