gpt4 book ai didi

c++ - C++ 中的 main() 是否重载?

转载 作者:IT老高 更新时间:2023-10-28 12:11:49 26 4
gpt4 key购买 nike

C++ 中存在 main() 的 2 个有效版本:

int main()  // version 1
int main(int argc, char **argv) // version 2

但是两种重载不能同时共存。为什么不? (潜在用例:从终端运行程序时,如果没有传递参数,则调用第一个版本,否则调用第二个版本。)

编译器是否执行特殊检查以允许每个二进制文件只有一个版本?

最佳答案

§3.6.1/2 (C++03) 说

An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:

   int main() { /* ... */ }
int main(int argc, char* argv[]) { /* ... */ }

您可以使用其中任何一个。两者都符合标准。

另外,由于 char *argv[] 等价于 char **argv,将 char *argv[] 替换为 char **argv 没有任何区别。


But both the versions cannot co-exist at the same time ! (use case can be like: while running the binary from command prompt, if you pass no argument then 1st version should be called else the 2nd version).

没有。两个版本不能同时存在。一个程序只能有一个 main 函数。哪一个,取决于你的选择。如果要处理命令行参数,则必须选择第二个版本,否则第一个版本就足够了。另请注意,如果您使用第二个版本,并且不传递任何命令行参数,那么它没有任何危害。它不会导致任何错误。您只需要相应地解释 argcargv,并根据它们的值编写程序的逻辑和流程。

关于c++ - C++ 中的 main() 是否重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6408183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com