Work only in the Virtual world!
using va_list in functions, you can get variable number of arguments (Since it is in stdarg.h - it's standard, hence portable)- fine.But to call a macro with variable number of args, either you must use ISO C99 standard compliant compiler, which allows something like #define debug(format, ...)Or use the GCC extension - which still supports variadic macros, but with a slightly different syntax. #define debug(format, args...)--Ani
But ani do U think all the compilers support __LINE__ and __FILE__ macros....U can also use __FUNCTION__ (seen in an article) to display function name too..but I am not able to supress warnings..Do U think this kind of macro writing is efficient..
Definitely, you can use __FILE__ and __LINE__ as they are ANSI std.But __FUNCTION__ is not! (still most compilers including gcc provide this as an extension)What warnings could you not supress?Generally, for logging functionalities, macros call external functions which can do various things, like log it to a local file, or transfer to a remote filesystems where logs are archived.I dont see any efficiecy concerns here. Infact I've seen lots of such usage.
Reddy, just remembered this from CFAQ yesterday, actually, you can do away with double-parens '((' which is confusing and we have to remember to type in each time.Instead, you can write the macro in a different way so that you dont need double-parens:Sample:#define DEBUG printf("\n%s:%d - %s: ", __FILE__, __LINE__, __FUNCTION__), printfyou can call the macro likeDEBUG ("Hello \n");--Ani
yes it sounds good..
Post a Comment