【发布时间】:2011-07-14 00:29:38
【问题描述】:
既然C++允许函数重载,那我们可以重载main()吗?
例如,
int main(const std::string &)
{
return 0;
}
int main(int argc, char *argv[])
{
return main("calling overloaded main");
}
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*”到“int”的无效转换
prog.cpp:8:错误:函数“int main(int, char**)”的参数太少
prog.cpp:10:错误:此时在文件中
所以我想知道 C++ 标准是否明确 禁止main 的重载?如果有,是哪一种说法?
【问题讨论】:
标签: c++ overloading main standards