typedef名が無いと関数型をメンバーポインター型に変形させることができない
using MF = void () const;
MF class_type::* mp;

そして何より、関数内で#defineしたものは関数外に漏れる