char *argv []和int argc c 的全局覆盖范围
Global reach of char *argv[ ] and int argc C++
我已经拥有主函数: main(int argc,char *argv [])。我想使用这些变量: argc,argv 在其他函数中:
int function()
int main(int argc, char *argv[])
{
...
function();
...
return 0;
}
int function()
{
int b=argc;
return 0;
}
但是,编译器会出现错误, argv 未申报。如何在其他功能中使用这些变量?
将它们作为参数传递给您的函数。
int function(int argc)
{
int b = argc;
return 0;
}
并致电
function(argc);
在main
当您将其标记为C++
时,您可以执行以下技巧:
int argc;
char **argv;
void foo() {
printf("argc: %dn", argc);
for (int i=0; i < argc; i++)
printf("%s n", argv[i]);
}
int main(int argc, char **argv)
{
::argc = argc;
::argv = argv;
foo();
return 0;
}
argc和argv是main的局部变量。您可以将它们作为参数传递到其他功能。例如
int function( int );
int main(int argc, char *argv[])
{
...
function( argc );
将函数声明为
int function (int argc) {
int b = argc;
....
}
主要呼叫功能,例如
function(argc);
或
使用静态变量存储您的argc和argv,但这不是建议
在您
之前int g_argc;
char* g_argv[];
在您的主要功能中
g_argc = argc;
g_argv = argv;
function();
int您的功能只需直接使用g_argc
另一种选择是使两个全局变量保持与argc和 *argv
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何创建一个空的全局类并在启动时实例化它
- 使用ios:ate写入到流会覆盖现有文件
- 为什么我的全局 new() 覆盖被绕过了?
- 为什么同时覆盖全局新运算符和特定于类的运算符不是模棱两可的行为?
- 当在Python中定义__str__时,如何将C 的标准全局函数覆盖
- 是否有可能覆盖全局实现的功能
- 通过使用全局变量的函数访问在给定范围内被覆盖的变量
- char *argv []和int argc c 的全局覆盖范围
- 忽略全局覆盖的新建/删除
- C++自定义全局新建/删除覆盖系统库
- 与覆盖全局新建和删除运算符有关的问题
- 模板类函数中的静态变量被全局静态变量覆盖
- 是否可以根据分配对象的类型特征覆盖全局 new 运算符?
- 为什么 Boost 使用全局函数覆盖来实现自定义验证程序"Program Options"
- 当在全局命名空间中覆盖new/delete时,我应该使用std-rtl中的new/delete的默认实现
- 我可以覆盖C++/MFC项目中全局定义的API吗