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

C语言中宏的常见用法总结

文章目录

      • 1. 基本用法
      • 2. 带参数的宏
      • 3. 宏的嵌套定义
      • 4. 包含多条语句的宏
        • (1)#define AA ({})
        • (2)#define BB do{}while(0)
      • 5. 取消宏定义
      • 6. 条件宏定义

1. 基本用法

#define 宏名 宏值
  • 注:
  • 宏名一般大写字母命名
  • 结尾没有分号

2. 带参数的宏

#define 宏名(参数列表) 替换文本
  • 注:
  • 参数列表中的参数不需要声明类型,因为宏只是简单的文本替换。
  • 在定义替换文本时,最好对参数加上括号,以避免运算符优先级导致的错误。

3. 宏的嵌套定义

宏可以嵌套定义,即一个宏的替换文本中可以包含其他宏

#define NUM 2
#define FUN (NUM * NUM)

在预处理阶段,FUN会根据NUM的值进行替换。

4. 包含多条语句的宏

(1)#define AA ({})

可包含多条语句,
最后一条语句执行的结果将作为宏函数的返回值

(2)#define BB do{}while(0)

可包含多条语句,
且没有返回值,只是原样替换

5. 取消宏定义

#undef 宏名			取消已经定义的宏

6. 条件宏定义

#ifdef DEBUG_MODE 
#define LOG(message) printf("%s",message)
#else 
#define LOG(message) ((void)0) 
#endif

可以使用条件编译指令(如#ifdef、#ifndef、#if等)结合宏定义来根据不同的条件选择性地定义宏。


http://www.kler.cn/a/410677.html

相关文章:

  • C++《二叉搜索树》
  • Apollo9.0源码部署(Nvidia显卡)
  • python中一些内置的数据类型转换方
  • 40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
  • SCAU软件体系结构实验四 组合模式
  • Ubuntu,openEuler,MySql安装
  • 如何开发一个脚手架
  • 创建HTTPS网站
  • 《AI大模型开发笔记》——Prompt提示词最佳实践
  • 为什么DDoS防御很贵?
  • Js-对象-04-Array
  • Docker 的优势与测试环境的快速迁移
  • typescript基础入门
  • Redis Key 命名规范文档
  • python学习笔记(10)算法(3)列表
  • 国土安全部发布关键基础设施安全人工智能框架
  • 2024-11-21 学习人工智能的Day29 初见深度学习
  • vue2使用el-checkbox不能选中,解决方法
  • ES部署集群与可视化
  • 卷积篇 | YOLOv8改进之引入基于小波变换的新型卷积WTConv | ECCV 2024
  • 基于SSM的校园订餐管理系统
  • 寻找用户推荐人(考点:ifnull)【SQL+Pandas】
  • 002 MATLAB语言基础
  • Pytorch使用手册-Tensors(专题二)
  • 【人工智能基础】自然语言处理基础
  • IDEA2024如何创建Web项目以及配置Tomcat