C 语言宏定义的几个技巧
2014-04-21 16:12
176 查看
1、定义一个包含多个语句的宏函数
观察下列函数
#define MYDELETE (p) free(p); p = 0;
如果把这个宏函数放在if 后,会出现编译错误
if (p != 0)
MYDELETE(p) ;
else
;
如果把宏定义为
#define MYDELETE (p) {free(p); p = 0;}
则,程序员习惯在语句后加上; 所以也会出现调用错误
if (p!=0)
MYDELETE(p);
else
;
可以通过把多条语句放在 do () while(0)中,为了方便,定义一个MYDO宏
#define MYDO(some) do {some} while (0)
则MYDELETE 可以写成
#define MYDELETE(p) MYDO(free(p);p=0;)
2、通过宏定义,开关调试信息
#ifdef DUBUG
#define MYPRINT(S) MYDO( write_to_log(s);write_to_screen(s);)
#else
#define MYPRINT(S) MYDO
#endif
这样,如果是debug版本,则打印信息到文件,否则,什么也不做。
观察下列函数
#define MYDELETE (p) free(p); p = 0;
如果把这个宏函数放在if 后,会出现编译错误
if (p != 0)
MYDELETE(p) ;
else
;
如果把宏定义为
#define MYDELETE (p) {free(p); p = 0;}
则,程序员习惯在语句后加上; 所以也会出现调用错误
if (p!=0)
MYDELETE(p);
else
;
可以通过把多条语句放在 do () while(0)中,为了方便,定义一个MYDO宏
#define MYDO(some) do {some} while (0)
则MYDELETE 可以写成
#define MYDELETE(p) MYDO(free(p);p=0;)
2、通过宏定义,开关调试信息
#ifdef DUBUG
#define MYPRINT(S) MYDO( write_to_log(s);write_to_screen(s);)
#else
#define MYPRINT(S) MYDO
#endif
这样,如果是debug版本,则打印信息到文件,否则,什么也不做。
相关文章推荐
- C 语言宏定义的几个技巧
- Java语言中内存管理的几个技巧
- 简单介绍Java语言中内存管理的几个技巧
- 简单介绍Java语言中内存管理的几个技巧【转】
- 语言宏定义技巧(常用宏定义)
- C 语言宏定义技巧
- C 语言宏定义技巧
- 简单介绍Java语言中内存管理的几个技巧
- Go语言使用字符串的几个技巧分享
- 【转】语言宏定义技巧
- C语言宏定义技巧
- C 语言宏定义技巧(常用宏定义)
- Java语言中内存管理的几个技巧
- Java语言中内存管理的几个技巧
- 简单介绍Java语言中内存管理的几个技巧
- Java语言中内存管理的几个技巧
- Java语言中内存管理的几个技巧
- C语言宏定义技巧(常用宏定义)
- Java语言中几个常用的包
- 几个常用的js技巧