一个关于宏定义的有关问题

一个关于宏定义的问题定义下面的结构体struct vec{double x}和宏#define dfn(a,x) a.xx如果有一个vec b

一个关于宏定义的问题
定义下面的结构体
struct vec
{
  double x;
};
和宏
#define dfn(a,x) a.x=x
如果有一个vec b
dfn(b,0);
会报错,为什么?

[解决办法]
dfn(b,0)------b.0=0 ??????
[解决办法]
改为
#define dfn(a,c) a.x=c