1

我知道该main函数可以接受两个参数:int argcchar* argv[]. 这是有据可查的。然而,该main函数也可以接受第三个参数。有谁知道这个论点是什么?

4

4 回答 4

3

它是环境变量,与 normal 具有相同的类型argv。虽然它不是 C++ 标准的一部分,但可能仍然适用于某些系统。

它来自较旧的 UNIX 系统,环境变量通常是这样传递的。

于 2013-02-28T12:33:23.203 回答
3

该函数main在 Mac OS 上也可能有第四个参数,其形式char **apple为“包含任意 OS 提供的信息”。有关详细信息,请参阅http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B

于 2013-02-28T12:37:33.990 回答
2

只有两种形式main需要支持,并且可以移植到所有平台。但是实现可以添加它想要的任何其他形式:int main( double )例如(尽管我从未听说过使用它的实现)是合法的,就像int main( char const* arg0... ). 在实践中,“经典”Unix 将支持 int main( int argc, char** argv, char** environ ); 这 不是Posix 所要求的,并且可能有一些 Unix 不支持它。在 Unix 世界之外,许多早期的 C 实现试图看起来像 Unix,因此也可能支持这一点(今天更多是出于向后兼容性的原因,而不是看起来像 Unix)。

然而,这不是你可以指望的东西。

于 2013-02-28T13:02:28.873 回答
0

您可以通过char *env[],但不必像这样命名它,以便传递一组不同的环境变量。您可以更改执行特定进程的环境。

这篇文章,有解释。

于 2013-02-28T12:35:15.213 回答