typedef struct
{
int x;
int y;
}MYTEST;
#define SetMyValue(addr_mt,x1,y1) do /
{/
(addr_mt)->x = x1;/
(addr_mt)->y = y1;/
} while (0);
注意这里的宏参数中x1,y1不能与,结构体中的字段相同,否则错误
上面的宏在某些情况下替换会出问题
例如
MYTEST mt[100];
int ab = 1;
SetMyValue(&mt[ab++],1,2);
应该改成
#define SetMyValue(addr_mt1,x1,y1) do /
{/
MYTEST * addr_mt = addr_mt1;/
(addr_mt)->x = x1;/
(addr_mt)->y = y1;/
} while (0);