C ++,错误C2448 - 函数式初始化器似乎是一个函数定义

时间:2014-04-29 15:58:24

标签: c++ visual-c++ compiler-errors

该程序应该从用户那里得到两个输入并显示答案。 这些是我得到的错误:

  

(15):错误C2065:'x':未声明的标识符

     

(15):错误C2065:'y':未声明的标识符

     

(16):错误C2448:'writeanswer':函数式初始化器似乎是一个函数定义

     

(30):错误C3861:'writeanswer':未找到标识符

这是我的代码:

#include "stdafx.h"
#include <iostream>
using namespace std;

int Readnumber()
{
    int num;
    cin >> num;
    return num;
}

    void writeanswer(x, y) //THIS IS LINE 15
{ //THIS IS LINE 16
    int a;
    a = x + y;
    cout << "This is the answer: " << a;
}


int main()
{
    cout << "Please enter a number: ";
    int x = Readnumber();

    cout << "Please enter another number: ";
    int y = Readnumber();

    writeanswer(x, y); //THIS IS LINE 30


    system("Pause");
    return 0;
}

我认为第30行的错误是导致更多错误的主要问题。我试过谷歌,我似乎无法解决它。

编辑:我以为我曾经尝试过,我花了一整天时间来解决这个问题!感谢所有答案。

3 个答案:

答案 0 :(得分:6)

C ++是强静态类型的,不是动态类型的。您必须编写参数类型xy

正如您在函数体内指定局部变量a的类型一样,您必须指定输入参数xy的类型:

void writeanswer( int x , int y )

答案 1 :(得分:4)

writeanswer的函数声明中,您有

void writeanswer(x, y)

但它应该是

void writeanswer(int x, int y)

编译器不知道代码中的x和y类型。它不能暗示主函数的数据类型,因为它们的范围仅限于声明它们的主函数。

在某些语言中,包括MATLAB和Python,您不需要始终指定数据类型,因为它是根据您尝试将其设置为的值的类型在编译/解释时隐式排序的。 C ++不能像那样工作。 C ++在这方面非常严格,您必须在声明时指定每种数据类型。

答案 2 :(得分:1)

第15行是错误的。你应该按照以下方式编写它:

void writeanswer(int x, int y)