A macro can be declared to expect constant arguments:
class Main { static public function main() { const("foo", 1, 1.5, true); } macro static function const(s:String, i:Int, f:Float, b:Bool) { trace(s); trace(i); trace(f); trace(b); return macro null; } }
With these, it is not necessary to detour over expressions as the compiler can use the provided constants directly.