C语言 为我的 shell 命令实现详细选项



我正在为shell命令编写C代码。一个简单的命令,连接到服务器并发送/接收一些基本数据。我采取不同的选项,如 -l -z 等

我想做的是为用于切换详细程度的命令添加一个 -v 选项。例如,如果我给出-v选项,它将打印每个细节,例如"连接到..","侦听端口"等。

现在我不希望每个 printf 语句附近都有 if/else 逻辑(我有 100 个)。我想要的是一个宏/用户定义的函数,比如说new_print它将采用详细标志(如果我给出 -v 选项,则为 1)和要打印的字符串。 如果标志为 0 ,则不会打印语句。

您能否提供一些相同的示例

您可以使用可变长度的 aruguments 格式对 printf 进行自己的"重新实现",因此它的工作方式与 printf 非常相似,但也采用您的标志,如下所示:

void verbPrintf(bool verbosity, const char *format, ...)
{
    // va_list is a special type that allows hanlding of variable
    // length parameter list
    va_list args;
    va_start(args, format);
    // If verbosity flag is on then print it
    if (verbosity)
        vfprintf (stdout, format, args);
    else
        // Do nothing
}

然后使用它在你的代码中重新转换你的 printf。

例如
verbPrintf(verbosity, "my verb print %in", 5);

相关内容

  • 没有找到相关文章

最新更新