visual C++,错误C2448-函数样式初始值设定项似乎是函数定义

visual C++, error C2448 - function-style initializer appears to be a function definition

本文关键字:函数 定义 似乎是 C++ 错误 C2448- 样式 visual      更新时间:2023-10-16

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

(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++是强静态类型的,而不是动态类型的。您必须编写参数xy的类型。

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

void writeanswer( int x , int y )

writeanswer的函数声明中,您有

void writeanswer(x, y)

但应该是

void writeanswer(int x, int y)

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

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

第15行错误。你应该用以下方式写:

void writeanswer(int x, int y)