I think you found a bug that still exist in VFP9. See code below
CLEARrelease aa
#define ALINEDEFINED aa = aa
a=1
#define aa a
ALINEDEFINED
* The next two line should display the same
? [ALINEDEFINED]&& aa = a - Bug
? [aa = aa]&& a = a - correct
?vartype(aa), 'should be U', ' Error'
> >Anyone can reproduce / explain the code below ? > <snip>