错误: '::main'必须返回'int'

6

这是我的主要函数:

void main(int argc, char **argv)
{
    if (argc >= 4)
    {
        ProcessScheduler *processScheduler;
        std::cout <<
            "Running algorithm: " << argv[2] <<
            "\nWith a CSP of: " << argv[3] <<
            "\nFilename: " << argv[1] <<
            std::endl << std::endl;

        if (argc == 4)
        {
            processScheduler = new ProcessScheduler(
                argv[2],
                atoi(argv[3])
            );
        }
        else
        {
            processScheduler = new ProcessScheduler(
                argv[2],
                atoi(argv[3]),
                atoi(argv[4]),
                atoi(argv[5])
            );
        }
        processScheduler -> LoadFile(argv[1]);
        processScheduler -> RunProcesses();

        GanntChart ganntChart(*processScheduler);
        ganntChart.DisplayChart();
        ganntChart.DisplayTable();
        ganntChart.DisplaySummary();

        system("pause");

        delete processScheduler;
    }
    else
    {
        PrintUsage();
    }
}

当我编译时,我收到的错误信息如下:

Application.cpp:41:32: error: '::main' 必须返回 'int'

这是一个 void 函数,我怎么能返回 int 呢?我该如何解决这个问题呢?


2
将签名更改为“int”。 - Eli Sadoff
请见https://dev59.com/9HA65IYBdhLWcg3wvxaE。 - Fred Larson
1
你对这个错误信息有什么不清楚的地方吗? - πάντα ῥεῖ
3个回答

9

试试这样做:

int main(int argc, char **argv)
{
    // Code goes here

    return 0;
}
< p > return 0; 返回一个0给操作系统,表示程序执行成功。


5
在C++中,return 0; 是隐含的,不必要写出来。 - molbdnilo
1
是的,我同意。这是惯例,并且将其包含在内是一个好习惯,以避免产生歧义。 - Michael
谢谢,我想要一个空的主函数并且不返回任何东西,但是我猜它必须是int类型。将void改为int后,错误得到了解决。 - SPLASH
1
@Michael 这不是解决方案。 - roottraveller
@roottraveller,你能提供一些为什么它不是的见解吗? - Michael

7

C++要求main()函数的类型为int


谢谢,我不知道那个。我以为你可以有void main。 - SPLASH
@Nick Pavini,你有任何文档吗?请与我们分享。 - roottraveller
1
冲突到这个答案 - https://dev59.com/v3E85IYBdhLWcg3wNgrk - roottraveller

1

函数声明为int main(..);,因此将您的void返回值更改为int,并在主函数的末尾return 0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接