C语言 宏的概念和使用总结

原创 2015年07月10日 22:36:39

第一部分

宏的概念:

被定义为“宏”的标识符称为“宏名”。

在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。""分为有参数和无参数两种.


第二部分  无参宏

无参宏的使用格式:  #define 标识符 字符串 


使用注意事项:


1) 习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母

2) 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名 ,这是一种简单的替换.预处理程序对他不作任何检查.

3) 宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。
4) 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域

可使用 #undef命令。
5) 宏名在源程序中若用“”括起来,则预处理程序不对其作宏代换。

6) 宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层 层代换。

7) 可用宏定义表示数据类型,使书写方便。
8) 对“输出格式”作宏定义,可以减少书写麻烦9)特别注意注意括号问题 


第三部分 有参宏

对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。使用格式:#define 宏名(形参表) 字符串


有参宏使用注意事项:


1) 带参宏定义中,形参之间可以出现空格,但是宏名和形参表之间不能有空格出现。

2) 在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体 的值。要用它们去代换形参,因此必须作类型说明.带参宏中,形参和实参只是符号代换,不存在值传递的问题。

3) 在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。4)在宏定义中,字符串内的形参通常要用括号括起来以避免出错。在上例中的宏定义中

(y)*(y) 表达式的y都用括号括起来,因此结果是正确的。5)宏定义也可用来定义多个语句,在宏调用时,把这些语句又代换到源程序内。 



版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 各种概念总结--持续更新中

Java是OOP语言,所有的OOP语言都有三个特性:封装、多态、继承。 封装 封装是一种将代码与它所处理的数据结合起来,而不被外界干扰滥用的程序设计机制。 在Java中,基本封装单元是类,数...
  • john_lw
  • john_lw
  • 2017年05月08日 11:02
  • 258

操作系统概念性题目总结

什么是操作系统?答:操作系统是一种系统软件,是软、硬资源的控制中心。它以尽量合理有效的方法组织单个或多个用户以多任务方式共享计算机的各种资源。资源共享的两种方式?时分和空分。试述多道程序设计的基本思想...
  • qq_27687701
  • qq_27687701
  • 2016年11月26日 23:18
  • 532

C语言之关键字、宏定义、条件编译

一 全局变量和局部变量 变量作用域:变量的可用范围按照作用域的不同,变量可以分为:局部变量和全局变量 局部变量:定义在函数内部的变量以及函数的形参称为局部变量 作用域:从定义哪一行开始直到与其所在的代...
  • ab20514
  • ab20514
  • 2015年10月02日 16:30
  • 1672

C语言各种预编译宏总结

查看gcc所定义的宏的命令:cpp -dM /dev/null 命令一: cpp -dM /dev/null 命令二: gcc -dM -E - 1:OS MACRO:   WINDOWS: _WI...
  • u012842205
  • u012842205
  • 2015年07月20日 21:35
  • 1260

C++ 概念总结(基于 C++11)

C++ 概念总结(基于 C++11)构造 构造函数形式: 默认构造函数 拷贝构造函数 定义: 当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数 形式: A(const ...
  • Mars_Arbiter
  • Mars_Arbiter
  • 2016年05月06日 14:21
  • 657

深度学习系列——关于神经网络理解的总结

因为课题的需要,最近在学习深度学习方面的知识,因为是初学,博文中可能会有错误和不严谨的地方,欢迎大家批评指正、互相交流,好了言归正传。   目前在人工智能和大数据方向炒的最火的就是深度学习,深度学习...
  • u010987458
  • u010987458
  • 2017年05月25日 10:56
  • 659

《数据库系统概论》学习总结

1.      数据挖掘是从数据库中发现知识,或者主要是从大量的磁盘数据中发现知识。它与机器学习和统计分析不一样。 2.      数据库管理系统(Database-Management System...
  • qq_24059821
  • qq_24059821
  • 2016年09月05日 20:31
  • 1351

iOS敏捷开发之道,常用的宏定义总结

iOS开发中,直接在pch文件中导入宏定义。在做项目的时候,直接拿过来使用,可以大幅度提高开发速度。 下面是 个人总结的一些宏定义。如果大家有其他的常用的宏定义,欢迎添加。我会定期更新这个blog…...
  • misakahina
  • misakahina
  • 2015年07月19日 08:00
  • 1834

计算机网络基础知识总结

主题 概要 网络基础 网络知识的常用概念,常用协议,分层结构 编辑 时间 新建 20160727 序号 参考资料 1 鸟哥的linux...
  • shaozhenged
  • shaozhenged
  • 2016年07月27日 17:25
  • 714

vuex、辅助函数、Modules总结(附Demo)

一.Vuex概念专为vue.js应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态,以相应的规则保证状态以一种可预测的方式发生变化 二.状态组件内部状态:仅在一个组件内使用的状态. 应...
  • a4_9527
  • a4_9527
  • 2017年12月21日 20:02
  • 75
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言 宏的概念和使用总结
举报原因:
原因补充:

(最多只允许输入30个字)