如何在其他.c文件中共享*argv[]

如何在其他.c文件中共享*argv[],c,C,我有 main.c 什么的 一些东西 我如何使用 char*argv[] 在something.c文件中,无需使用argv[]作为参数从something.c调用函数?您可以使用全局变量,但这并不是真正干净的代码。将argv作为参数传递没有问题。但是,您应该在main中执行健全性检查,以控制从命令行获取的数据。一般来说,我不建议这样做,但: main.c: char **global_argv; int main(int argc, char *argv[]) { global_a

我有

  • main.c
  • 什么的
  • 一些东西
我如何使用
char*argv[]

something.c
文件中,无需使用
argv[]
作为参数从something.c调用函数?

您可以使用全局变量,但这并不是真正干净的代码。将argv作为参数传递没有问题。但是,您应该在main中执行健全性检查,以控制从命令行获取的数据。

一般来说,我不建议这样做,但:

main.c

char **global_argv;

int main(int argc, char *argv[])
{
    global_argv = argv;
    ...
}
extern char **global_argv;

某物。c

char **global_argv;

int main(int argc, char *argv[])
{
    global_argv = argv;
    ...
}
extern char **global_argv;

你能详细说明你为什么要那样做吗?通过参数列表传递值有什么不对?@mike,尽管argv本身可能不是全局的好东西,但它的解释可能是全局的。想象一下,一个程序在命令行中有很多选项和配置。如果你一直传递“struct config”对象而不是使其成为全局对象,这可能会太麻烦,参数传递也太多。@Mike,因为如果我在something.c中有例如3个函数,而从main.c中调用,我将只调用一个,从main.c中调用另外两个。这两个函数需要参数。因此,在最后,我将不得不调用所有以参数作为参数的函数,并且这些参数将仅用于其中的两个。解析从
main
调用的一个函数中的所有参数并设置全局标志(或全局结构中的标志)是没有问题的,例如,但是如果我在
something.c
中有3个函数,我只从
main.c
调用其中一个,从
something.c
中的函数调用另外2个,那么它看起来也不干净。在something.c中我必须包含main.c?不,它们是单独的文件。