c++ - 函数可以访问传递给 main() 的参数吗?

标签 c++ c program-entry-point args

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

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

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

最佳答案

某些系统确实提供对参数列表的访问,或者至少 argv[0] 。但通常的做法是将 main 改为 mutate选项处理期间的 argc 和 argv ,因此对于它们的全局接口(interface)应该返回什么没有可靠的正确答案。

此外,全局状态通常是不可取的,而且让任何低级函数尝试分析他们可能一无所知的程序的参数都会损害调试,最终会导致 don不要这样做。。将参数(或者更好的是,解码它们产生的有意义的标志)传递给库并不难。

关于c++ - 函数可以访问传递给 main() 的参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53072241/

相关文章:

c - 如何使用 strstr 函数返回值?

c - 如何避免此代码中的 GOTO

python - 在函数内分配变量

无法使用字符串将 'main' 转换为 'void' 函数

c++ - 将包含主函数的 C 程序包装到 C++ 类中,

c++ - 确保一个类不是抽象的

c++ - 在 OpenSSL 中验证 RSA 公钥?

c - 为什么不能只检查 errno 是否等于 ERANGE?

c++ - 重载期间提升参数

c# - 将 Ptr 编码到结构的访问冲突