macros and variadic functions