什么是C ++编译器错误“看起来像一个函数定义,但没有参数列表;”意思?

时间:2010-04-08 22:46:17

标签: c++

#include <iostream>
#include <fstream>

using namespace std;

int main
{
    int num1, num2;
    ifstream infile;
    ostream outfile;

    infile.open("input.dat");
    outfile.open("output.dat");

    infile >> num 1 >> num 2;

    outfile << "Sum = " << num1 + num2 << endl;

    infile.close()
    outfile.close()
    return 0;
}

这就是我所做的,当我编译它时,我得到了这个错误,说

error C2470: 'main' : looks like a function definition, but there is no
parameter list; skipping apparent body

请不要恨我:(我是这个计算机科学的新手......

5 个答案:

答案 0 :(得分:16)

我不恨你。的

函数具有参数,例如:

void foo(/* parameters here */);

如果你的函数没有,你不会省略列表,但是把它留空或放void

int main()
// or:
int main(void)

您使用的是由您自己决定的。我更喜欢明确说明void


注意,您还会遇到其他变种。这是第二种最常见的变体:

int main(int argc, char *argv[])

它给你一个参数的计数和它们是什么。如:

myExe andAOne andATwo andIDontHateYou

您将能够访问这些参数。可能会有更多,但现在应该涵盖它。直到后来才担心这些东西。 &LT; 3


关于您的代码:

int main(void) // no parameters
{
    int num1, num2;
    ifstream infile;
    ostream outfile;

    infile.open("input.dat");
    outfile.open("output.dat");

    infile >> num1 >> num2; // no spaces in you variable names

    outfile << "Sum = " << num1 + num2 << endl;

    infile.close(); // missing semicolon
    outfile.close(); // missing semicolon

    return 0; // fun fact: optional. In C++, return 0 in main is implicit
}

这应该让你开始。


其余部分可能没有意义,这没关系。我只是为了完整而包含它。如果它没有意义,暂时忽略它:

int main(void)
{
    ifstream infile("input.dat"); // use the constructor to open it
    ostream outfile("output.dat");

    int num1, num2; // don't declare variables until you need them
    infile >> num1 >> num2;

    outfile << "Sum = " << num1 + num2 << endl;

    // closing is done automatically in the destructor of the fstream
}

答案 1 :(得分:5)

您忘记了函数定义所需的括号。将其更改为:

int main()
{
    ...
}

答案 2 :(得分:4)

你在主要人物后缺少括号。

另外,分号:

infile.close();
outfile.close();

答案 3 :(得分:3)

将其更改为:

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

答案 4 :(得分:3)

int main()

欢迎使用Computer Sc。和Stackoverflow(SO)。

建议:这里已经有很多C ++问题了,所以在问一个新问题之前先搜索一下:)