Because I can't include "mars.h" where defined this enum into "target.h" ("mars.h" is dmd specific header).
Also compiler prevent using of forward declaration of `enum LINK;` as argument of functions. You can try to do that and see error.
And yes, `enum LINK;` declared in some headers which don't include "mars.h" (e.g. "mtype.h") and can think that it's ok. But it's illusion. "mtype.h" included in all files which include "mars.h" early than "mtype.h" and "mtype.h" implicitly uses of "mars.h" definitions. You can remove `enum LINK;` from "mtype.h" and code still compiles.
I can use this bad trick in "target.h" (include "mars.h" in all files which use "target.h" early than it) but it's a strange solution, IMO.