我知道main函数可以使用两个参数int argc和char * agrv []。这有据可查。然而,主要功能也可以采取第三个论点。有谁知道这个论点是什么?
答案 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文章,有解释。