在许多C++ IDE和编译器中,当它为您生成主函数时,它看起来像这样:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
当我在没有IDE的情况下编写C++代码时,只需使用命令行编译器,我输入:
int main()
Run Code Online (Sandbox Code Playgroud)
没有任何参数.这意味着什么,对我的计划至关重要?
每个程序都从main(int argc, char *argv[])定义开始.
我不明白这意味着什么.如果我们在程序中不使用这些参数,有人可以解释为什么我们会使用这些参数,我会很高兴的吗?为什么不int main()呢:?
程序的名称是其中的一个元素,*argv[]并且argc是参数个数的计数*argv[]?发送到的其他参数是*argv[]什么?我们如何发送它们?
该标准明确规定main有两个有效(即保证有效)的签名; 即:
int main();
int main(int, char*[]);
Run Code Online (Sandbox Code Playgroud)
我的问题很简单,以下是合法的吗?
int main(const unsigned int, const char* const* argv);
Run Code Online (Sandbox Code Playgroud)
我的测试中说"是",但我不能确定的答案,因为我不能超载main改变int来unsigned int以及非顶层const的argv -ness?如果我是,那显然是禁止的.
那么,这些修改是否可以保证在符合标准的编译器上工作?
每次我用Xcode创建一个项目(标准命令行实用程序)时,我的main函数开始看起来像这样:
int main(int argc, const char * argv[])
Run Code Online (Sandbox Code Playgroud)
括号中的所有内容是什么?为什么要使用这个而不仅仅是
int main()?
由于C+++允许函数重载,我们可以重载main()吗?
例如,
int main(const std::string &)
{
return 0;
}
int main(int argc, char *argv[])
{
return main("calling overloaded main");
}
Run Code Online (Sandbox Code Playgroud)
gcc-4.3.4不编译这个,并给出这些错误:(见ideone)
prog.cpp:4:错误:'int main(const std :: string&)'的第一个参数应该是'
int'prog.cpp:4:错误:'int main(const std :: string&)'只取零或两个参数
prog.cpp:在函数'int main(int,char**)'中:
prog.cpp:8:错误:C函数的声明'int main(int,char**)'与
prog.cpp 冲突:4 :错误:上一个声明'int main(const std :: string&)'这里
prog.cpp:在函数'int main(int,char**)'中:
prog.cpp:10:错误:从'const char*转换无效'
to'int'prog.cpp:8:错误:函数'int main(int,char**)'
prog.cpp的参数太少:10:错误:此时在文件中
所以我想知道C++标准是否明确禁止重载main?如果是这样,哪个陈述?
c++ ×4
c ×3
argc ×2
argv ×2
arguments ×1
overloading ×1
parameters ×1
signature ×1
standards ×1