如果我想将用于处理命令行参数的大部分代码保留在 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();
...
}
将它们作为参数传递是一个更好的设计,因为它是封装的,如果您想要或轻松地将程序转换为库,您可以修改/替换参数。全局变量更容易,因为如果您有许多不同的函数出于某种原因访问参数,您只需将它们存储一次,而无需在所有不同的函数之间不断传递它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)