在我的C++代码中有几个fprintf语句,我用它来进行调试.由于我可能再次需要它们,我宁愿暂时不评论它们.但是,我需要快速执行程序,所以我想避免将它们打印出来,因为它们暂时(我将stderr重定向到文件).
优选地,这将由用户将参数传递给程序来确定,我将这样提取:
main (int argc, char *argv[])
{
int isPrint=0;
if (argc > 1 ) {
isPrint = atoi ( argv[2]);
}
}
Run Code Online (Sandbox Code Playgroud)
我想将fprintf重命名为另一个名称,然后从该函数执行fprintf调用,使用相同的参数,基于isPrint的值; 然而,我意识到fprintf可以有很多不同类型的参数和不同数量的参数; 并且我不知道用这些要求声明我自己的功能的任何通用方法.
所以我想知道如何创建一个函数,它的工作方式与fprintf完全相同,但它采用了额外的参数isPrint ; 或者如何以另一种方式解决上述问题.
第一篇文章后的补充信息:一种解决方案是在每个fprintf语句之前添加:
if (isPrint == true )
Run Code Online (Sandbox Code Playgroud)
典型的方法是使用预处理器来编译调用fprintf().
你会做这样的事情:
#if defined DEBUG
#define LOG(a) fprintf a
#else
#define LOG(a)
#endif
Run Code Online (Sandbox Code Playgroud)
在代码中你会做:
LOG(("The value is %f", some_variable));
Run Code Online (Sandbox Code Playgroud)
请注意双括号,这只是为了使语法有效.你可以做得更好,但这更容易解释.
现在,您可以只编辑代码#define或文件顶部#undef的DEBUG预处理程序符号,或将合适的选项传递给编译器(-D对于GCC).
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |