Remove usage of empty initializer extension
Don't return void expressions
Explicitly convert function to void pointer

This is not legal according to the C standard, however, Apple's API
forces one to do it.
Don't embed directives within macro arguments

This is undefined behavior.
Enable -pedantic