c++ 宏编写技巧

Posted live4m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ 宏编写技巧相关的知识,希望对你有一定的参考价值。

错误做法1:

#define F() a(); b()
if (xxx)
    F();
else
    c();

/* 预处理后 */

if (xxx)
    a(); b();   /*  中间有分号,但是没用大括号包起来  */
else  
    c();

错误做法2,直接加大括号也是错误的:

#define F()  a(); b(); 

/* 预处理后 */
if (xxx)
     a(); b(); ;   /* 末尾多了一个分号 */
else 
    c();

正确做法,do-while:

#define F() do  a(); b();  while(0)

/* 预处理后 */
if (xxx)
    do  a(); b();  while(0);	/* 分号正好在while(0)后面,很合理 */
else
    c();

以上是关于c++ 宏编写技巧的主要内容,如果未能解决你的问题,请参考以下文章

c++ 宏编写技巧

定义 C 宏并将内存地址设置为用 C 和 C++ 编写的结构成员

Visual C++编程技巧之七

c++多线程——锁技巧

VS 编写C++时使用技巧

头一回发博客,来分享个有关C++类型萃取的编写技巧