有没有一种方法可以访问main()
之外的程序的args而不存储对它们的引用?
程序参数存储在程序的保留空间中,因此我看不到无法访问它们的原因。也许有些像const char** get_program_arguments()
和int get_program_arguments_count()
的东西,但我找不到...
我的问题来自以下事实:我正在重写公司内部许多程序中现在使用的库,并且我需要访问这些程序的公共参数而不更改它们。例如,我需要程序名称,但不能使用::getenv("_")
,因为它们可以从各种shell中执行。我不能使用GNU扩展,因为它需要在Linux,AIX,使用gcc,CC等的SunOS上工作。
最佳答案
某些系统确实提供对参数列表或至少argv[0]
的访问。但是,在选项处理期间,通常将main
转换为mutate argc
和argv
,因此对于它们应该返回的全局接口,没有可靠的正确答案。
此外,全局状态通常是不可取的,而且它具有使任何低级函数尝试分析他们可能不了解的程序自变量的危害,这很不利于调试,结果您最终不这样做。将参数(或通过解码产生的更好的,有意义的标志)传递给库并不难。
关于c++ - 函数可以访问传递给main()的args吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53072241/