C语言与宏

原创 2015年11月19日 21:19:16

       宏定义又称为宏代换、宏替换,简称“宏”。

     一、不带参数的宏定义:

     格式: #define 标识符 字符串

     标识符常称为宏名。

     例:   #define PI 3.1415926   把程序中出现的PI全部换成3.1415926

     二、带参数的宏定义:

    格式:   #define 宏名(参数表) 字符串

    #define S(a,b) a*b

    area=S(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2;

    类似于函数调用。

    三、使用宏的注意事项

   1、 宏名一般用大写

   2、使用宏可提高程序的通用性和易读性

   3、宏定义末尾不加分号

   4、 “#undef指令取消名字的宏定义,这样做可以保证后续的调用时函数调用”

    5、宏定义可以嵌套
    6、 字符串" "中不包含宏
    7、 宏定义不分配内存,变量定义分配内存。
     8、实参如果是表达式容易出问题

#define S(r) r*r

area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;

正确的宏定义是#define S(r) ((r)*(r))
    9、宏名和参数的括号间不能有空格。
    10、宏替换只作替换,不做计算,不做表达式求解。
    11、函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存
     四、宏与函数的异同
     1、一般来说可以将宏看成一个简单的函数,只是宏不能进行入参类型检查。
      2、函数只有一个返回值,利用宏则可以设法得到多个值。
      3、宏展开使源程序变长,函数调用不会。
      4、宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)。

C语言的艺术:强大的宏

这次不讲算法了,讲一讲C语言里面一个很强大的功能:宏。 宏,是一个大家都很熟悉的概念,很多人也经常使用宏,但是用的都不怎么深,我所知道的最常见的用法就是用宏抽象数组长度。#define N 99 a...
  • restlessssh
  • restlessssh
  • 2016年05月31日 00:06
  • 2561

关于C语言中宏定义的高级运用

1、# (stringizing)字符串化操作符。其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 如: ...
  • u012905667
  • u012905667
  • 2014年06月01日 10:41
  • 1593

C语言中的宏展开

宏展开顺序
  • buye1986
  • buye1986
  • 2015年04月17日 18:00
  • 897

C语言宏定义作用、使用方法小结(2)

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成...
  • zhao67865
  • zhao67865
  • 2015年10月10日 11:01
  • 876

C语言宏定义使用技巧

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。 1,防止一个头文件被重复包含 #ifndef COMDE...
  • u013776495
  • u013776495
  • 2016年02月29日 11:49
  • 3384

C语言宏定义的几个坑和特殊用法

总结一下C语言中宏的一些特殊用法和几个容易踩的坑。由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档。 宏基础 宏仅仅是在C预处...
  • qq997843911
  • qq997843911
  • 2017年03月14日 14:33
  • 538

C语言的本质(19)——预处理之一:宏定义

我们在写代码时已多次使用过以“#”号开头的预处理命令。如包含命令#include,宏定义命令#define等。在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。所谓预处...
  • yincheng01
  • yincheng01
  • 2014年07月17日 15:38
  • 1485

C语言宏定义,内置宏,__FILE__,__LINE__,## 用法

当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。 下面列举一些成熟软件中常用得宏定义 1,防止一个头文件被重复包含 #ifndef COMDEF_H #de...
  • tian_110
  • tian_110
  • 2015年01月04日 21:41
  • 2287

C语言的宏总结

1. 简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)]  #define  标识符替换列表 替换列表是一系列的C语言记号,包括标识符、关键字、数、...
  • PirLCK
  • PirLCK
  • 2016年04月26日 21:50
  • 5712

详解C语言中的宏定义

1. 防止一个头文件被重复包含  [cpp] view plain copy  print? #ifndef COMDEF_H    #define C...
  • YangT_T
  • YangT_T
  • 2016年06月23日 10:29
  • 2803
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言与宏
举报原因:
原因补充:

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