我有香草Ç下面的宏功能:检测空参数在预处理宏
#define GLOG(format_string, ...) { \
const char *file = strrchr(__FILE__, '/'); \
char format[256] = "%s:%s!%d\t"; \
strncat(format, format_string, 248); \
strcat(format, "\n"); \
printf(format, __FUNCTION__, file ? file : __FILE__, __LINE__, ##__VA_ARGS__); \
}
,它可以让我打印包含当前函数,文件和行数,例如调试消息
GLOG("count=%d", count);
可能会打印
do_count:counter.c!123 count=456
如何修改打印所有局部变量,如果主叫方省略format_string中的作用?例如
GLOG();
可能会打印
do_count:counter.c!123 count=456, message="Hello world", array=[7, 8] structure={ptr=0xACE0FBA5E, coord={x=9, y=0}}
如果这是不可能的,我怎么可以修改它仅打印当前函数,文件和行号?例如作为
strncat
线简直是strncat(format, , 248);
感谢您的建议,但它并没有完全回答这个问题,因为GLOGF和GLOG是不同的功能,用户必须记住在这两种情况下使用哪一种。 – Gnubie
@Gnubie:检查更新。如果这是你所需要的,你仍然可以调用'GLOGF()'并获得'main:test.c!xx'。 –