命令行参数

Command-line arguments

本文关键字:参数 命令行      更新时间:2023-10-16

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

这是环境变量,与正常的argv类型相同。虽然它不是c++标准的一部分,但在某些系统上仍然可以工作。

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

函数main在Mac OS上可能还有第四个参数,形式为char **apple, "包含任意OS提供的信息"。

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

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

为了传递一组不同的环境变量,可以传递char *env[],但是不需要这样命名它。您可以更改特定进程执行的环境。

看这篇文章,有解释