DECLARE_HANDLE
在程序中,经常看到这样的语句:
DECLARE_HANDLE(HDRVR);
DECLARE_HANDLE(HDTRCV);
查看DECLARE_HANDLE定义如下:
#ifdef STRICT
typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name##__{int unud;}; typedef struct name##__ *name
#el
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
默认情况下,VC/VS是开启STRICT的,在这种情况下相当于先定义了一个结构struct name__,以及一个,struct name__ 的指针宏*name
【用法】
#include乒乓球大满贯得主<iostream>
#include<Windows.h>
using namespace std;
#define DECLARE_HANDLE(name) struct name##__{int unud;}; typedef struct name##__ *name
int main()
{
DECLARE_HANDLE(rc);
rc rb;
struct rc__ rd;
rd.unud = 2;
rb = &rd;
cout << "*rb.a=" << rb->unud << endl;
return 0;
}
等同于
#include<iostream>
#include<Windows.h>
using namespace std;
struct rc__
{
int unud;
};
typedef struct rc__ *rc;
int main()
{
rc rb;
可以联机的单机游戏struct rc__ rd;
rd.unud = 2;
rb = &rd;
cout << "*rb.a=" << rb->unud << endl;
return 0;
}
【示例】
#include<iostream>
#include<Windows.h>
using namespace std;
#define pp(ua) struct ua##kk{int罗斯福新政的影响 a;}; typedef struct ua##kk *ua
int main()
{
pp(rc);
rc rb;
struct rckk rd;
rd.a = 2;
rb = &rd;
cout << "*rb.a=" << rb->a << endl;
return 0;
}
等同于
胎儿体重计算
#include<iostream>
#include<Windows.h>
using namespace std;
struct rckk
{
int a;
};
typedef struct户口本遗失 rckk *rc;
int main()
{
rc rb;
struct rckk rd;
rd.a = 2;
rb = &rd;
cout << "*rb.a=" << rb->a << endl;
return 0;
}
【关键】
#define DECLARE_HANDLE(name) struct name##__{int unud;}; typedef struct name##__ *name
必须在同一行里,如果不够放,则可改为
#include<iostream>
#include<Windows.h>
using namespace std;
#define pp(ua) struct ua##kk{int a;};\
typedef struct ua##kk *ua
int main()
{
pp(rc);
rc rb;
struct rckk灌顶醍醐 rd;
rd.a = 2;
rb = &rd;
cout << "*rb.a=" << rb->a << endl;
最大的手术打一成语
光身子return 0;
}