C++,错误C2448函数样式初始化器看起来是函数定义

C++,错误C2448函数样式初始化器看起来是函数定义,c++,visual-c++,compiler-errors,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 Read

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

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行的错误是导致更多错误的主要问题。我尝试过谷歌,但似乎无法修复它


编辑:我想我已经试过了,我花了一整天的时间在这个问题上!感谢所有的答案。

C++是强静态类型,而不是动态类型。您必须写入参数x和y的类型

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


C++是强静态类型,而不是动态类型。您必须写入参数x和y的类型

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


第15行错了。你应该这样写:

void writeanswer(int x, int y)

第15行错了。你应该这样写:

void writeanswer(int x, int y)

在writeanswer的函数声明中,您有

void writeanswer(x, y)
但应该是这样

void writeanswer(int x, int y)
编译器不知道代码中的x和y类型。它不能暗示来自主函数的数据类型,因为它们的作用域仅限于声明它们的主函数


在某些语言中,包括MATLAB和Python,您不需要总是指定数据类型,因为在编译/解释时会根据您试图设置的值类型对其进行隐式排序。C++不这样工作。C++在这方面非常严格,必须在声明时指定每个数据类型。
void writeanswer(x, y)
但应该是这样

void writeanswer(int x, int y)
编译器不知道代码中的x和y类型。它不能暗示来自主函数的数据类型,因为它们的作用域仅限于声明它们的主函数


在某些语言中,包括MATLAB和Python,您不需要总是指定数据类型,因为在编译/解释时会根据您试图设置的值类型对其进行隐式排序。C++不这样工作。C++在这方面非常严格,必须在声明时指定每个数据类型。我对C++是新的,所以我不明白这一点。我是C++新手,所以我不明白这个。