gpt4 book ai didi

c++ - 增加程序的冗长性

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:07 24 4
gpt4 key购买 nike

这是一个非常n00b的问题但是我正在编写一个基于 nix 的工具,并希望根据传入的 vvv 数量设置详细标志,我将在我的程序中打印调试/信息语句。

我的问题是我将如何为此使用 opargs,因为 optargs 一次只能解析一个字符。

另外假设我知道我处于冗长级别 3,我所有的打印语句都必须处于 if 条件吗?或者有使用预处理器的聪明方法吗?

此外,如果有人可以向我指出执行此操作的一些在线代码,那就太棒了。

谢谢

我想通了,我想如果以后有人遇到这个我会在这里发帖:

基本上,对于所有不同的冗长语句,我使用预处理器定义了一个特殊的打印,例如:

#define dprintf \
if (verbosity == 1) printf

然后我根据需要在代码中放入语句,例如

dprintf ("Verbosity is at level 1.");

我的 opt atgs 看起来像这样

case 'v':
verbosity++;
break;

最佳答案

详细级别在编译时未知,因此您需要准备好代码来处理用户选择的任何级别。

一种简单且易于理解的方法是在一个不透明的编译单元中将您的日志记录功能分开,并使用一个静态变量来跟踪详细级别。然后你用像“set_logging_level(level)”这样的东西初始化它并编写你的日志函数由这个静态变量保护。然后,您只需公开初始化和日志记录函数,并在您的代码中根据需要使用它们。

static level = 0;
void set_logging_level(int l) { level = l; }

void log_info(char* msg) {
// Will always print
}

void log_debug(char *msg) {
if(level > 0)
// Write to stdout or stderr, whichever fits
}

void log_details(char *msg) {
if(level > 1)
// As above
}

void log_insanity(char *msg) {
if(level > 2)
// As above
}

编辑:更合理的日志记录条件。特别是如果您希望在详细级别上升时包含日志记录...

关于c++ - 增加程序的冗长性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10177506/

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