enumに関するコンパイルエラー

ずーっとenumに関するコンパイルエラーが消えなかったのですよ。

//File.h
typedef enum _ENUM{
  enum1,
  enum2,
}ENUM;
//File.cpp
#include "File.h"
void func(ENUM eNum){
}

これでいけると思ってたらまさかのコンパイルエラー。内容はENUMが定義されてないよ、とのこと。
普通に"File.h"インクルードしてるやん!!!
とかぶつぶつ言いながらいろいろ試行錯誤するものの全然みつからずオロオロしてました。



で。



ふと思い立ってソースファイルの方で#includeしたらまさかのコンパイル成功。
ちょw
ヘッダの方ではcstdioよまなくてもエラーが起こらないのに、ソースの方では読まないといけないとかどういうこと!?何がおこったの!?
enumがstdio.hに定義されていたからいけないのか何なのか、ご存じの方がいらっしゃったら教えてくださると嬉しいです。