Sie koennen ruhig "skill1" schreiben, aber wenn Sie es so definieren:

#define target_posX skill1;

macht der Precompiler in Ihrem Code daraus

vec_set(my.skill[0];,my.start_pos);

und das gibt natuerlich einen Syntaxfehler. Es hat nichts mit Skills zu tun, sondern nur mit dem ueberfluessigen Semikolon.