`define macros usage

Yes you can. But note that the `ifdef is not evaluated in the declaration of the macro; it is evaluated when the macro is called and expanded.