IIUC, your implementation does not solve the same problem.
The OP's implementation automatically determines the correct format string from the type of the variable. So you can simply do:
LOG_EXPR(some_int); LOG_EXPR(some_float); LOG_EXPR(some_complex_cocoa_type);