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 に答える