C 语言中的可变参数宏

在网上下载了vc++ 2008的绿色精简版,很小很好用。从此不再用vc6.0啦,编译STL不用再报一大堆的warning了~

1.可变参数宏

__VA_ARGS__表示参数列表哦

#include <stdarg.h> #include <iostream> using namespace std; #define DEBGE_TRACE(fmt, ...) / trace__r(__FILE__, __FUNCTION__, __LINE__, fmt, __VA_ARGS__); // //gcc //#define DEBGE_TRACE(fmt, rest...) / //trace__r(__FILE__, __FUNCTION__, __LINE__, fmt, ##rest); void trace__r(const char *module, const char *func, int line, const char *fmt, ...) { va_list ap; printf("FILE %s/n FUNCTION %s/n line %d/n", module, func, line); va_start(ap, fmt); char buf[1024]; vsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); printf("%s/n", buf); } int main() { printf("%d %d/n", 1, 2); DEBGE_TRACE("%d %d", 1, 2); return 0; }

 

你可能感兴趣的:(C 语言中的可变参数宏)