我们有
int main(int argc, char** argv, char** envc)
为普通人。但是我想知道是否还有其他论点可以有而不是这些。如果有的话,它指的是什么?
答案 0 :(得分:6)
嗯,继续崩溃:
argc
- C标准argv
- C标准env
- 适用于大多数UNIX和MS Win,但不适用于标准apple
- Mac OSX和Darwin 答案 1 :(得分:4)
答案在C和C ++中有所不同:
在C ++中,main
必须始终返回int
。每个实现都必须接受()
和(int, char**)
签名。实现可以接受任何其他签名。 如果接受的签名以int, char**, ...
开头,那些应该具有通常的含义。 (此外,main
获取C链接,不得重载,不得为模板,且不得调用。)
在C中,main
可以采取任何形式。但是,每个实现都必须接受int(void)
和int(int, char**)
类型。
正如您所注意到的,某些环境支持并符合这些指南的一个流行签名是int main(int argc, char * argv[], char * env[])
,其中第三个参数包含指向环境的指针。其他扩展是可以想象的;检查平台的文档。
答案 2 :(得分:3)
只有argc和argv是标准参数。之后的任何事情都取决于你的系统和编译器。
答案 3 :(得分:2)
答案 4 :(得分:1)
它是标准的延伸:
但它应该提供对环境的访问:
int main(int argc, char** argv, char** envc)
{
// It is an array of pointers to C-String
// The array is terminated with a NULL pointer.
// So you can loop over with it like this.
for(int loop = 0;envc[loop] != NULL; ++loop)
{
fprintf(stdout, "%s\n", envc[loop]);
}
}
最好使用getenv
:
char * getenv ( const char * name );