定义宏打印某位域共有多少位

代码
#include <stdio.h>   
  
#define bits(p, d)  { \   
    
int _tmp=p->d, _bits=0; \   
    
for (p->d=1; p->d; p->d<<=1) \   
        _bits
++; \   
    p
->d=_tmp; \   
    printf(
"%s->%s has %d bits", #p, #d, _bits); \   
}   
  
typedef 
struct _s{   
    
int a:4;   
} S;   
int main()   
{   
    S tmp, 
*= &tmp;   
    bits(s,a);   
}   
  
/* 输出: s->a has 4 bits */

 

posted on 2010-04-29 14:23  庄冠华  阅读(132)  评论(0编辑  收藏  举报

导航