命令行参数

时间:2013-02-28 12:32:03

标签: c++ arguments main argv argc

我知道main函数可以使用两个参数int argc和char * agrv []。这有据可查。然而,主要功能也可以采取第三个论点。有谁知道这个论点是什么?

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分: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)。

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

答案 3 :(得分:0)

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

请参阅this文章,有解释。