C++ 命令行参数
我知道C++ 命令行参数,c++,arguments,main,argv,argc,C++,Arguments,Main,Argv,Argc,我知道main函数可以接受两个参数:int argc和char*argv[]。这是有据可查的。但是,main函数也可以接受第三个参数。有人知道这个参数是什么吗?它是环境变量,与普通的argv类型相同。虽然它不是C++标准的一部分,但它仍然可以在某些系统上工作。 它来自较旧的UNIX系统,环境变量通常是这样传递的。它是环境变量,与普通的argv类型相同。虽然它不是C++标准的一部分,但它仍然可以在某些系统上工作。 它来自较旧的UNIX系统,环境变量通常是这样传递的。您可以传递char*env[],
main
函数可以接受两个参数:int argc
和char*argv[]
。这是有据可查的。但是,main
函数也可以接受第三个参数。有人知道这个参数是什么吗?它是环境变量,与普通的argv
类型相同。虽然它不是C++标准的一部分,但它仍然可以在某些系统上工作。
它来自较旧的UNIX系统,环境变量通常是这样传递的。它是环境变量,与普通的
argv
类型相同。虽然它不是C++标准的一部分,但它仍然可以在某些系统上工作。
它来自较旧的UNIX系统,环境变量通常是这样传递的。您可以传递
char*env[]
,但是,为了传递一组不同的环境变量,它不需要这样命名。您可以更改特定进程正在其中执行的环境
请参阅文章,这里有一个解释。您可以传递
char*env[]
,但是,为了传递一组不同的环境变量,它不需要这样命名。您可以更改特定进程正在其中执行的环境
参见文章,有一个解释。函数
main
在Mac OS上也可能有第四个参数,形式为char**apple
,“包含任意OS提供的信息”。有关详细信息,请参见。函数main
在Mac OS上可能还有第四个参数,形式为char**apple
,“包含任意OS提供的信息”。有关详细信息,请参见。只需输入两种形式的main
支持,并且可移植到所有平台。但是
实现可以添加它想要的任何其他表单:intmain(
双精度)
将是合法的,例如(尽管我从未听说过
一个使用它的实现),就像intmain(char
常量*arg0…
。实际上,“经典”Unix将支持
intmain(intargc、char**argv、char**environ)
;这是
Posix不需要,而且可能有一些Unix
这不支持它。在Unix世界之外,许多早期的
C实现试图看起来像Unix,因此也可能
出于向后兼容性的原因,现在支持此功能(更多)
而不是看起来像Unix)
然而,这不是你可以信赖的 只有两种形式的
main
需要
支持,并且可移植到所有平台。但是
实现可以添加它想要的任何其他表单:intmain(
双精度)
将是合法的,例如(尽管我从未听说过
一个使用它的实现),就像intmain(char
常量*arg0…
。实际上,“经典”Unix将支持
intmain(intargc、char**argv、char**environ)
;这是
Posix不需要,而且可能有一些Unix
这不支持它。在Unix世界之外,许多早期的
C实现试图看起来像Unix,因此也可能
出于向后兼容性的原因,现在支持此功能(更多)
而不是看起来像Unix)
然而,这不是你可以信赖的 在C语言中,这将是环境变量“
char**envp
。@Cicada它不是POSIX(或ANSI C,据我记忆所及)。@juanchopanza它确实不是POSIX,但这不是OP的问题。@Cicada你说得对。我只是想强调它是非常不可移植的。在C语言中,这将是环境变量。@Cicada它不是POSIX(或ANSI C,据我记忆所及)。@juanchopanza它确实不是POSIX,但这不是OP的问题。@Cicada你说得对。我只是想强调它是非常不可移植的。Envp总是通过,至少在UNIX上(并且它也因为工作的历史和向后兼容的原因而工作)即使它没有传递给C++,你也可以在C中写下你的入口点,并调用它的C++程序。对吗?@ BIGO在C和C++中的<代码>主< /Cuff>函数应该由运行时系统调用。所以它既可以在C和C++中使用,也可以在UNIX世界之外不可移植。程序员是否需要一个int-envc作为argc的等价元素,以便程序员可以看到有多少环境变量被传递给程序。或者是Car Env[]用空指针来定位?@ HeeEPEPrPoN没有<代码> EVC VC/代码>,但是数组被“<代码> null >代码>终止,就像<代码> ARGV 。Envp总是通过,至少在UNIX上(并且它也由于历史和向后兼容的原因而工作),即使它没有传递给C++,你可以在C中写下你的入口点,并调用它的C++程序,对吗?@ C和C++中的<代码>主< <代码>函数应该由运行时系统调用。所以它既可以在C和C++中使用,也可以在UNIX世界之外不可移植。程序员是否需要一个int-envc作为argc的等价元素,以便程序员可以看到有多少环境变量被传递给程序。或者char env[]是否以空指针为前哨?@heteperfan没有envc
,但是数组被NULL
终止,就像argv
一样。