>>554,555
可変長引数として渡したオブジェクトポインタは実引数拡張により全部 void* になるから、
typedef void FILE; とでもなっていない限りは適合するとは言えないよ。
va_arg(ap, FILE *) として受け取ってはいけない(移植性を損ねる)ということで合ってる。

そもそも適合は型と型の関係だから「NULLポインターはFILE*と適合」はおかしい。