宏定义

转载 2012年03月26日 16:00:54
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。

  在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。

  看下面的例子:

  #define MALLOC(n, type) \

  ( (type *) malloc((n)* sizeof(type)))

  利用这个宏,我们就可以为任何类型分配一段我们指定的空间大小,并返回指向这段空间的指针。我们可以观察一下这个宏确切的工作过程:

  int *ptr;

  ptr = MALLOC ( 5, int );

  将这宏展开以后的结果:

  ptr = (int *) malloc ( (5) * sizeof(int) );

example:

define的单行定义

#define maxi(a,b) (a>;b?a:b)

define的多行定义(注意加\)
//宏定义写出swap(x,y)交换函数
#define swap(x, y)\
x = x + y;\
y = x - y;\
x = x - y;

C++宏定义需要注意的细节

#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但如果我们不需要到一些细节,很容易因为这个简单的宏定义引发难以预料的问题 宏...
  • hsd2012
  • hsd2012
  • 2016年03月24日 09:15
  • 1317

Keil宏定义取代函数

#define ledon(i) {\ if (i==50) P1=0;\ else P1=0x21;\ }
  • hehui211
  • hehui211
  • 2012年12月06日 08:43
  • 791

宏定义Debug

#ifdef DEBUG #   define HRLog(fmt, ...) NSLog((@"HRDeBugLog\n    %@\n    %d line\n    %s\n    " fmt...
  • mrSunHR
  • mrSunHR
  • 2016年01月22日 19:53
  • 554

VC宏定义 及常用宏定义说明

END_CATCH    END_CATCH    说明:    标识最后的CATCH或AND_CATCH块的末尾。    END_MESSAGE_MAP    END_...
  • wzszwj
  • wzszwj
  • 2014年09月23日 10:44
  • 1820

iOS 宏定义的使用与规范

宏定义在很多方面都会使用,例如定义高度、判断iOS系统、工具类,还有诸如文件路径、服务端api接口文档。为了对宏能够快速定位和了解其功能,我们最好在定义的时候将其放入特定的头文件中。一、定义尺寸类的宏...
  • xiaoxiaobukuang
  • xiaoxiaobukuang
  • 2015年12月30日 21:07
  • 5247

__FILE__ __LINE__等几个常用的宏定义

__FILE__ 包含当前程序文件名的字符串 __LINE__  表示当前行号的整数 __DATE__ 包含当前日期的字符串 __STDC__  如果编译器遵循ANSI C标准,它就是个非零值 __T...
  • zhanghaodx082
  • zhanghaodx082
  • 2014年01月04日 15:47
  • 544

用宏定义来完成位运算及复杂宏定义的解析方法

用宏定义来完成位运算及复杂宏定义的解析方法 #include // 第一题:用宏定义将32位数x的第n位(右边起算,也就是bit0算第1位)置位 //注意:1.宏名要大写 2....
  • gysmmzh
  • gysmmzh
  • 2016年04月16日 18:45
  • 831

关于宏定义的一些使用方法和注意点总结

我在写代码的时候喜欢使用宏,不仅使代码看起来整洁,而且用好了还能极大的减轻编码的工作量,但是如果 使用不当的话,出了问题查找起来就就非常的难了,下面的总结大部分是从网上看到的,也有一些是我自己在工作中...
  • m0_37968915
  • m0_37968915
  • 2017年08月05日 22:51
  • 2004

宏定义中的选择判断句

#define kViewWidth (isLowIPhone6?(375.0f): iWidthScreen)#define kViewWidth isLowIPhone6?(375.0f): iW...
  • likandmydeer
  • likandmydeer
  • 2015年11月08日 22:51
  • 1603

宏定义的顺序

一直以为宏定义是有顺序的,今天发现,原来没有,测试了下,代码如下:       1 #include       2        3 int main()       4 {       ...
  • chen_chuang_
  • chen_chuang_
  • 2015年09月15日 08:38
  • 462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:宏定义
举报原因:
原因补充:

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