【问题标题】:How can I write c++ main function? [duplicate]如何编写 C++ 主函数? [复制]
【发布时间】:2015-07-10 13:21:15
【问题描述】:

我可以编写不返回整数值的 c++ 主函数吗? 我正在使用 Visual Studio 2010。

#include <iostream>
using namespace std;

int main()
{
    cout <<"In main function" << endl;  
    //return 0; 
}    `

【问题讨论】:

  • 您是否收到此代码的任何错误或警告?
  • 没有。我没有收到任何错误或警告。

标签: c++ visual-studio-2010 main


【解决方案1】:

是的,从C99版本开始,可以跳过main()的返回值。

让我们看看 C++11

3.6.1

main 中的 return 语句具有离开 main 函数的效果 (销毁任何具有自动存储持续时间的对象)并调用 std::exit 以返回值作为参数。如果控制达到 main结束没有遇到return语句,效果是 执行的那个

return 0;

【讨论】:

  • C99 和 C++ 有什么关系?
  • @MikeSeymour 我的意思是在 C99 之后的所有编译器(无论是 C 还是 C++ )都会将返回类型设为 0,还是错了?如果我在这部分错了,请纠正我。
  • main的返回值可以强制转换吗?例如:(void) main(void)
  • @ThomasMatthews,AFAIK,否(也尝试编译,但未编译)
【解决方案2】:

根据C++标准(3.6.1主函数)

5 main 中的 return 语句具有离开 main 的效果 功能(销毁具有自动存储持续时间的任何对象)和 以返回值作为参数调用 std::exit。 如果控制 在没有遇到 return 语句的情况下到达 main 的末尾, 效果就是执行

return 0;

因此最短的 C++ 程序是

int main() {}

【讨论】:

  • int main(){} 短 1 个字节 ;-)
【解决方案3】:

使用 VS2010 编译器,如果您对返回值不感兴趣,实际上可以将其声明为 void main()

虽然这不是符合 C++ 标准的功能。

【讨论】:

  • 你错了。 main 应具有返回类型 int。
  • VS 2010自带的编译器允许将main声明为void
  • @Cristik:这无关紧要。
  • @LightnessRacesinOrbit:提问者说他​​正在使用VS2010,所以我给出了适合该环境的答案,因为VS允许您声明void mains,因此开发人员不需要输入return 声明。
  • 这是您的意见,我尊重它,我只是想让提问者知道他的can I write c++ main function without return integer value? 问题有一个解决方法。编辑我的答案的好人也澄清说这不是标准的,所以我认为这个答案不会伤害任何人。这并不意味着人们应该同意它:)
猜你喜欢
  • 2014-11-21
  • 2017-01-18
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 2012-04-22
相关资源
最近更新 更多