如何编写一个日志函数或宏,可以将调用者的名称附加到C中的日志输
我需要C语言中的日志功能或宏,它应该在
Linux中工作,可以接受格式字符串和参数列表,并且可以将调用者的函数名称附加到输出字符串.
这是一个例子.假设日志记录功能(宏)称为smart_log.看起来像: smart_log(const char *fmt,...) 第一个参数fmt是一个格式字符串,就像printf中的格式字符串一样. 假设一个名为example_function的函数以这种方式调用smart_log: void example_function() { smart_log("try to output number %dn",1); } 然后日志字符串看起来像: [example_function]: try to output number 1 所以关键是smart_log将调用者的函数附加到格式字符串. 我不知道如何在C中实现这一点.我认为可以使用宏来实现这一目标. 解决方法
函数没有可移植的方式来在C中知道它的调用者.但是你是对的,一个宏工作:
#define smart_log(...) ( printf("[%s]: ",__func__),printf(__VA_ARGS__) ) __func__已定义(C99 / C11 6.4.2.2 p.1)
感谢Hagen von Eitzen改进我原来的尝试! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |