我知道该main
函数可以接受两个参数:int argc
和char* argv[]
. 这是有据可查的。然而,该main
函数也可以接受第三个参数。有谁知道这个论点是什么?
4 回答
它是环境变量,与 normal 具有相同的类型argv
。虽然它不是 C++ 标准的一部分,但可能仍然适用于某些系统。
它来自较旧的 UNIX 系统,环境变量通常是这样传递的。
该函数main
在 Mac OS 上也可能有第四个参数,其形式char **apple
为“包含任意 OS 提供的信息”。有关详细信息,请参阅http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B。
只有两种形式main
需要支持,并且可以移植到所有平台。但是实现可以添加它想要的任何其他形式:int main(
double )
例如(尽管我从未听说过使用它的实现)是合法的,就像int main( char
const* arg0... )
. 在实践中,“经典”Unix 将支持
int main( int argc, char** argv, char** environ )
; 这
不是Posix 所要求的,并且可能有一些 Unix 不支持它。在 Unix 世界之外,许多早期的 C 实现试图看起来像 Unix,因此也可能支持这一点(今天更多是出于向后兼容性的原因,而不是看起来像 Unix)。
然而,这不是你可以指望的东西。
您可以通过char *env[]
,但不必像这样命名它,以便传递一组不同的环境变量。您可以更改执行特定进程的环境。
看这篇文章,有解释。