[WTF](http://s167866.gridserver.com/wp-content/uploads/2009/02/wtf.png)

do not use defines for functions. ever.
That's what inline methods are for.

I guarantee defines are going to brake in hilariously unexpected ways. And they are a pain to debug.