How can a macro create functions that are handled at compile time?