enumと文字列を同時に宣言するマクロを組んでいるのですが、

#define STR(head ,name) head ## name

#define MAKE(...) \
typedef enum _ENUM{ \
STR(ENUM_,__VA_ARGS__ ),ENUM_Num \
} ENUM; \
const char *Name[ENUM_Num] ={ #__VA_ARGS__ };

というマクロで
MAKE(one,two,three)
とすると、本来はENUM_one ENUM_two ENUM_three というenumの要素が得られるはずなのに、
なぜか生成されるのはENUM_one two threeの三つになってしまいます。
Visual Studio 2015 CommunityのIntelisenceでのエラーなのですが、
これは本来は予期している結果が得られているのでしょうか?
それともこいつが言うように実際は後者のような宣言になっているのでしょうか?