【问题标题】:What happens with one argument in main()?main() 中的一个参数会发生什么?
【发布时间】:2017-03-18 14:11:08
【问题描述】:

对于以下程序,一些编译器在执行时会发出警告

3:5: warning: 'int main(int)' takes only zero or two arguments [-Wmain]

有些没有。我可以将 main() 与一个参数一起使用吗?

#include <iostream>

int main(int x)
{
   x = 5;
   std::cout << x;
   return 0;
}

【问题讨论】:

  • C++ 标准指定了main 函数的参数。单个int 参数不在有效的替代方案中。参见例如this main function reference 了解更多信息。
  • @Someprogrammerdude,不是必需的替代方案,但如果实现支持它仍然有效(来源:eel.is/c++draft/basic.start.main#2
  • "main() 中的一个参数会发生什么?"实现定义的行为。
  • @A.S.H,环境变量允许第三个参数是很常见的。
  • @A.S.H,实际上,它可能是这样写的,因为我知道没有允许一个参数的实现,但有很多允许 3 个。

标签: c++ main


【解决方案1】:

C++ 标准 §3.6.1/2 关于main 的内容如下 功能:

它的返回类型应为 类型int,否则它的类型是实现定义的。全部 实现应允许以下两个定义 main:

int main() { /* ... */ }

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

所以最终由您的编译器决定int main(int x) 是否正常。不用说,使用这样的main 函数会使您的代码不可移植。

【讨论】:

  • @Christian Hackl,对我这个 C++ 初学者来说,似乎 C++ 编译器和 C++ 一样多。顺便问一下,argc、char* 和 argv 是什么意思?我知道在 main() 的主体中,我不仅可以编写 cmets,还可以编写更多内容,包括变量定义、语句、函数调用。
  • @GeorgeTheodosiou:我们不能像那样教你 C++。你需要一本解释这些基本知识的好书。
  • @Christian Hackl:你推荐我一个在线的吗?
  • @GeorgeTheodosiou:是的!见stackoverflow.com/questions/388242/…
  • @Christian Hackl:非常感谢您的建议。我选择了“C++ Primer”。
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2016-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多