加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 有没有比#if DebugMode更好的方法来记录

发布时间:2020-12-16 03:42:30 所属栏目:百科 来源:网络整理
导读:我正在制作一个c库,它将从c#调用P / Invoke,所以我无法断点/调试c方面的东西.所以我决定添加日志记录,以便我可以看到是否出现任何问题以及发生了什么.我添加一个#define DebugMode 1,以确定我是否要记录. 首先,我不是很擅长c,但我知道足以绕过.所以我的问题
我正在制作一个c库,它将从c#调用P / Invoke,所以我无法断点/调试c方面的东西.所以我决定添加日志记录,以便我可以看到是否出现任何问题以及发生了什么.我添加一个#define DebugMode 1,以确定我是否要记录.
首先,我不是很擅长c,但我知道足以绕过.所以我的问题是:

>有没有比围绕每个Log调用包装#if DebugMode #endifs更好的方法?我可以简单地在Log方法中执行此操作,如果未启用日志记录则返回但是这并不意味着所有这些日志字符串都将在程序集中?
>我如何模拟printf使用“…”运算符执行的操作,使我能够传递类似Log的内容(“变量x为{0}”,x);
>是否有任何技巧,如获取我可以在日志中使用的某种行号或堆栈跟踪信息?

谢谢!

解决方法

一种简单的方法是只定义一个宏,如果你没有处于调试模式,它什么都不做.这样你就不必将每个调用都包装在#ifdef中.

一个简单的实现可能是:

#if DebugMode
#define MY_LOG(string,...) printf(string,__VA_ARGS__)
#else
#define MY_LOG(string,...)
#endif

还有其他方法和库(例如boost),但这会让你快速得到一些东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读