gpt4 book ai didi

c++ - 是否可以使程序的执行跳过 fprintf 语句/如何创建我自己的 fprintf 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 15:25:07 29 4
gpt4 key购买 nike

在我的 C++ 代码中有几个 fprintf 语句,我已将其用于调试。由于我可能会再次需要它们,所以我暂时不想将它们注释掉。但是,我需要快速执行程序,所以我想避免它们被打印出来,因为它们目前是这样的(我将 stderr 重定向到一个文件)。

这最好由用户将参数传递给程序来确定,我会像这样提取它:

main (int argc, char *argv[])
{
int isPrint=0;
if (argc > 1 ) {
isPrint = atoi ( argv[2]);
}

}

我想将 fprintf 重命名为另一个名称,然后根据 isPrint 的值从该函数使用相同的参数调用 fprintf;然而,后来我意识到 fprintf 可以有这么多不同类型的参数和不同数量的参数;而且我不知道有什么通用的方法可以根据这些要求声明我自己的函数。

所以我想知道如何创建一个函数,它的工作方式与 fprintf 完全相同,但它需要额外的参数 isPrint;或者如何以另一种方式解决上述问题。

第一篇文章后的补充信息:一种解决方案是在每个 fprintf 语句之前添加:

if (isPrint == true )

最佳答案

典型的方法是使用预处理器编译掉对 fprintf() 的调用。

你会做这样的事情:

#if defined DEBUG
#define LOG(a) fprintf a
#else
#define LOG(a)
#endif

在代码中你会做:

LOG(("The value is %f", some_variable));

请注意双括号,这只是为了使语法有效。你可以做得更好,但这更容易解释。

现在,您可以将代码编辑为 #define#undef 文件顶部的 DEBUG 预处理器符号,或将合适的选项传递给编译器(-D for GCC)。

关于c++ - 是否可以使程序的执行跳过 fprintf 语句/如何创建我自己的 fprintf 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228528/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com