编译源时找不到c ++标识符

时间:2013-03-20 15:20:48

标签: c++ visual-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();
    WriteAnswer(userInput);
    system("pause");
    return 0;
};

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

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

当我尝试编译时,它说:

1&gt;错误C3861:&#39; ReadNumber&#39;:未找到标识符

1&gt;错误C3861:&#39; WriteAnswer&#39;:未找到标识符

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

由于

4 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

您忘记输入功能原型。

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

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

答案 2 :(得分: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 ()
{
    ...
}

答案 3 :(得分:0)

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

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