0

这是我的代码:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int userInput = -9999;
    userInput = ReadNumber();
    WriteAnswer(userInput);
    system("pause");
    return 0;
};

int ReadNumber ()
{
    int liInput = -9999;
    cin >> liInput;
    return liInput;
};

 void WriteAnswer(int data)
{
    cout << data << endl;
};

当我尝试编译时,它说:

1>错误 C3861:“ReadNumber”:未找到标识符

1>错误 C3861: 'WriteAnswer': 未找到标识符

为什么会出现上述错误?以及如何解决这个问题?

谢谢

4

4 回答 4

6

C++ 源代码是从头到尾编译的。

当编译器走到这一步时:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    int userInput = -9999;
    userInput = ReadNumber();   // <-- What is this?

这是真的——没有证据表明ReadNumber存在。

在使用函数之前声明它们的存在。

int ReadNumber ();
void WriteAnswer(int data);
于 2013-03-20T15:23:01.380 回答
2

您忘记键入函数原型。

int ReadNumber ( void );
void WriteAnswer(int );

在调用函数之前将它们放入您的代码中。

于 2013-03-20T15:22:01.607 回答
1

在您的代码中,您尝试调用ReadNumber尚未声明的函数。编译器对此函数一无所知:

int _tmain(int argc, _TCHAR* argv[])
{
    ...
    ReadNumber();   // call to function ReadNumber, but what is ReadNumber ??? 
}

// definition of ReadNumber:
int ReadNumber ()
{
    ...
}

你应该先声明它:

// declaration:
int ReadNumber();

int _tmain(int argc, _TCHAR* argv[])
{
    ...
    ReadNumber();   // call ReadNumber that takes no arguments and returns int
}

// definition of ReadNumber:
int ReadNumber ()
{
    ...
}
于 2013-03-20T15:23:30.937 回答
0

在第一次调用函数之前,您必须编写函数原型或函数本身。

在您的代码编译器中看到调用,ReadNumber()但它不知道该函数是什么。

于 2013-03-20T15:48:22.780 回答