函数是否可以访问传递给main()的参数
Can a function access args passed to main()?
有没有一种方法可以访问main()
之外的程序参数,而不存储对它们的引用?
程序参数存储在程序的保留空间中,所以我认为没有理由不能访问它们。也许有类似const char** get_program_arguments()
和int get_program_arguments_count()
的东西,但我找不到…
我的问题来自于这样一个事实:我正在重写一个库,该库现在在公司的许多程序中使用,我需要在不更改它们的情况下访问这些程序的公共参数。例如,我需要程序名称,但我不能使用::getenv("_")
,因为它们可以从各种shell执行。我不能使用GNU扩展,因为这需要在Linux、AIX、SunOS上使用gcc、CC等
某些系统确实提供了对参数列表的访问,或者至少提供了对argv[0]
的访问。但main
在选项处理过程中突变argc
和argv
是常见的做法,因此对于它们应该返回什么全局接口,没有可靠的正确答案。
再加上全局状态的普遍不受欢迎,以及让任何底层函数尝试分析程序的参数都会损害调试的事实,这些函数可能对程序一无所知,最终会导致不要这样做。将参数(或者,更好的是,解码后产生的有意义的标志(传递到库并不困难。
相关文章:
- 函数是否可以访问传递给main()的参数
- 使用 Main() 返回值作为 python 脚本的参数
- 在 main() 中获取不带参数的命令行参数
- 如何在不指定 C++ 中的所有参数的情况下声明程序的 main() 入口点
- 可以 main() 及其参数具有属性
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- 在 main() 中传递C++命令行参数,但要做同样的工作
- main() 中的一个参数会发生什么
- 静态变量需要在MAIN处理ARGV参数之前进行初始化
- 函数main中的参数argv(int argc,char *argv [])
- 如何将矩阵参数发送到从C 中的MAIN函数
- 我需要创建一个函数在用户下打印"=",但由于变量是使用 main() 声明的,因此函数看不到参数
- 从main()将类对象实例作为参数将参数传递到另一个类对象实例
- 如何在Xcode 5中使用编辑方案将参数传递给main.cpp
- 使用一个可选参数获取两个参数到main
- C 将指针常数作为参数从MAIN到方法传递
- C/C++ main 函数中的参数列表大小是多少,行为不确定
- 在 C++ main 中将浮点表作为参数传递
- cmdLine中main的参数
- 为什么main()参数argv的类型是char*[]而不是const char*[] ?