finish funciton-like macro support and ifdef endif support