菜鸟进,猜猜运行结果
#include <stdio.h>
#include <string.h>
#define FLAG_IN_USE 1
#define FLAG_DOWNLOAD_OVER 1<<1
#define FLAG_HAS_DESC_FILE 1<<2
#define SET_SVR_IN_USE(svr)\
(svr)->flag|=FLAG_IN_USE
#define SET_SVR_USELESS(svr)\
(svr)->flag&=(~FLAG_IN_USE)
#define IS_SVR_IN_USE(svr)\
(((svr)->flag)&(FLAG_IN_USE))
#define SET_SVR_DOWNLOADED(svr)\
(svr)->flag|=FLAG_DOWNLOAD_OVER
#define SET_SVR_UNDOWNLOADED(svr)\
(svr)->flag&=(~FLAG_DOWNLOAD_OVER)
#define IS_SVR_DOWNLOADED(svr)\
((svr->flag)&(FLAG_DOWNLOAD_OVER))
#define SET_SVR_HAS_DES(svr)\
(svr)->flag|=(FLAG_HAS_DESC_FILE)
#define SET_SVR_NO_DES(svr)\
(svr)->flag&=(~FLAG_HAS_DESC_FILE)
#define IS_SVR_HAS_DES(svr)\
((svr->flag)&(FLAG_HAS_DESC_FILE))
typedef struct {char flag;} TEST_T;
int main(int argc,char**argv)
{
TEST_T test;
TEST_T *p=NULL;
p=&test;
memset(p,0,sizeof(TEST_T));
/****************USE********************/
SET_SVR_IN_USE(p);
printf("%d\n",*p);
printf("%d\n",IS_SVR_IN_USE(p));
#if 0
SET_SVR_USELESS(p);
printf("%d\n",*p);
printf("%d\n",IS_SVR_IN_USE(p));
/******************DOWNLOAD*******************/
SET_SVR_DOWNLOADED(p);
printf("%d\n",*p);
printf("%d\n",IS_SVR_DOWNLOADED(p));
#endif
SET_SVR_UNDOWNLOADED(p);
printf("%d\n",*p);
printf("%d\n",IS_SVR_DOWNLOADED(p));
/******************DES**************************/
SET_SVR_HAS_DES(p);
printf("%d\n",*p);
printf("%d\n",IS_SVR_HAS_DES(p));
SET_SVR_NO_DES(p);
printf("%d\n",*p);
printf("%d\n",IS_SVR_HAS_DES(p));
}