函数访问args是否可以传递给main()?

Grz*_*orz -1 c c++ program-entry-point args

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

程序参数存储在程序的保留空间中,因此我认为没有理由不能访问它们.也许有类似的东西const char** get_program_arguments(),int get_program_arguments_count()但我找不到它......

我的问题来自于我正在重写现在在公司内的许多程序中使用的库,我需要访问这些程序的常见参数而不更改它们.例如,我需要程序名称,但我无法使用,::getenv("_")因为它们可以从各种shell执行.我不能使用GNU扩展,因为这需要在Linux,AIX,SunOS上使用gcc,CC等工作.

Dav*_*ing 5

有些系统确实提供了对参数列表的访问,或者至少argv[0].但是在变选和处理期间main进行变异 是常见的做法,因此对于它们应该返回的全局接口没有可靠的正确答案.argcargv

除此之外,全局状态的一般不受欢迎程度,以及它损害调试以使任何低级函数试图分析他们可能一无所知的程序的参数的事实,并且最终不要这样做.将参数(或更好的,通过解码产生的有意义的标志)传递给库并不难.