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

前端之家收集整理的这篇文章主要介绍了c – 有没有比#if DebugMode更好的方法来记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在制作一个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),但这会让你快速得到一些东西.

猜你在找的C&C++相关文章