函数可以访问传递给main()的args吗?

时间:2018-10-30 20:15:52

标签: c++ c main args

有没有一种方法可以访问main()之外的程序的args而不存储对它们的引用?

程序参数存储在程序的保留空间中,因此我看不到无法访问它们的原因。也许有类似const char** get_program_arguments()int get_program_arguments_count()的东西,但我找不到它...

我的问题来自以下事实:我正在重写一个库,该库现在已在公司内部的许多程序中使用,并且我需要访问这些程序的公共参数而不更改它们。例如,我需要程序名称,但是我不能使用::getenv("_"),因为它们可以从各种shell中执行。我不能使用GNU扩展,因为它需要在Linux,AIX,使用gcc,CC等的SunOS上工作。

1 个答案:

答案 0 :(得分:5)

某些系统确实提供对参数列表或至少argv[0]的访问。但是,在处理选项期间,foreach($match->predictions as $prediction) { ... } mutate mainargc的常见做法是,因此对于它们应该返回的全局接口,没有可靠的正确答案。 / p>

此外,全局状态通常是不可取的,并且它具有使任何低级函数尝试分析他们可能不了解的程序参数的危害,这对调试不利,而您最终得到了 don不这样做。将参数(或通过解码得到的更好的,有意义的标志)传递给库并不难。