It's odd to use a macro with a name that looks like a global function, where it's a macro-specific interface by dint of using #ifdef. It would be more normal style to do: #ifdef DL_AFTER_LOAD DL_AFTER_LOAD (l); #endif Also, remember space before paren.