Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 命令行参数_C++_Arguments_Main_Argv_Argc - Fatal编程技术网

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
一样。