宏使用技巧

第1宏技巧:把枚举转化为字符串

      #:它的作用是给其后的参数添加一对引号。如下所示:

#define CaseEnum(a) case(a):LogMsgToFile(#a, id,  time)

switch( msg_type )

{

         CaseEnum( MSG_YouWereHit );

         break;

}

在编译器进行了预处理后,以上代码就会变成以下形式:

switch( msg_type )

{

    case( MSG_YouWereHit );

         LogMsgToFile("MSG_YouWereHit", id, time);

         break;

}

第2个宏技巧:利用二进制表达式得到编译器常量

    另外一个特殊操作符是##。这个操作符能让你把两个参数连接其阿里啊,如下所示:

#define cat(a,b) a ## b

value = cat(1,2);

等价于:value = 12;

第3个宏技巧:给标准断言添加描述性注释

#define assertmsg( a, b ) assert( a && b )

assertmsg( time > 0, "The arg time must be > 0");

第4个宏技巧:编译器断言

#define cassert(expn) typedef char __C_ASSERT__[(expn)?1:-1]

cassert( sizeof( MyEnum ) == sizeof( unsigned int ) ) ;

第5个宏技巧:得到一个数组里面的元素个数

#define NumElm( array ) (sizeof(array) / sizeof(array)[0] )

第6个宏技巧:在一个字符串找那个加入__LINE__

LINE__          //在此变量出现的地方的程序行号

__FILE__      //程序的文件名

__DATE__    //程序编译日期

__TIME__     //程序编译时间

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值