gpt4 book ai didi

c++ - 在 main() 之外处理 argc 和 argv

转载 作者:可可西里 更新时间:2023-11-01 17:41:58 27 4
gpt4 key购买 nike

如果我想将用于处理命令行参数的大部分代码保留在 main 之外(为了组织和更易读的代码),最好的方法是什么?

void main(int argc, char* argv[]){
//lots of code here I would like to move elsewhere
}

最佳答案

要么将它们作为参数传递,要么将它们存储在全局变量中。只要您不从 main 返回并尝试在 atexit 处理程序或全局范围内的对象的析构函数中处理它们,它们仍然存在并且可以从任何范围访问。

例如:

// Passing them as args:
void process_command_line(int argc, char **argv)
{
// Use argc and argv
...
}

int main(int argc, char **argv)
{
process_command_line(argc, argv);
...
}

或者:

// Global variables
int g_argc;
char **g_argv;

void process_command_line()
{
// Use g_argc and g_argv
...
}

int main(int argc, char **argv)
{
g_argc = argc;
g_argv = argv;
process_command_line();
...
}

将它们作为参数传递是一个更好的设计,因为它是封装的,如果您愿意,可以让您修改/替换参数,或者轻松地将您的程序转换为库。全局变量更容易,因为如果您有许多不同的函数出于任何原因访问 args,您可以只存储它们一次,而不需要在所有不同的函数之间不断传递它们。

关于c++ - 在 main() 之外处理 argc 和 argv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862798/

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