web-dev-qa-db-ja.com

システムがスコープ内で宣言されていませんか?

「システムがスコープ内で宣言されていません」問題を修正するにはどうすればよいですか?

#include<iostream>
using namespace std;

int main(void)
{
    system ( "TITLE Calculator" );
    system ( "COLOR 2" );
    char cChar;
    double dfirstnumber;
    double dsecondnumber;
    char cDoagain;

    do
    {
        system("CLS");
        cout << "Please enter the first number you would like to use."<< endl;
        cin >> dfirstnumber;
        cout<< "Please enter the operation you would like to perform." << " (+,-,*,or /)" << endl;
        cin >> cChar;
        cout<< "Please enter the second number you would like to use." << endl;
        cin >> dsecondnumber;

        switch (cChar)
        {
            case '+':
                cout << "The answer is: " << dfirstnumber << "+" << dsecondnumber << "=" <<
                (dfirstnumber + dsecondnumber) << endl;
                break;
            case '-':
                cout << "The answer is: " << dfirstnumber << "-" << dsecondnumber << "=" <<
                (dfirstnumber - dsecondnumber) << endl;
                break;
            case '*':
                cout << "The answer is: " << dfirstnumber << "*" << dsecondnumber << "=" <<
                (dfirstnumber * dsecondnumber) << endl;
                break;
            case 'x':
                cout << "The answer is: " << dfirstnumber << "x" << dsecondnumber << "=" <<
                (dfirstnumber * dsecondnumber) << endl;
                break;
            case 'X':
                cout << "The answer is: " << dfirstnumber << "X" << dsecondnumber << "=" <<
                (dfirstnumber * dsecondnumber) << endl;
                break;
            case '/':
                if(dsecondnumber == 0){
                cout<< "That is an invalid operation." << endl;}
                else{
                cout << "The answer is: " << dfirstnumber << "/" << dsecondnumber << "=" <<
                (dfirstnumber / dsecondnumber) << endl;

        }
                break;
                default:
                    cout << "That is an invalid operation." << endl;
                    break;
    }
                cout << "Would you like to start again? (Y/N)" << endl;
                cin >>  cDoagain;
    }while (cDoagain == 'Y' or cDoagain == 'y');
    system("PAUSE");
    return 0;
}

私の終了メッセージはここにあります:

C:\ Documents and Settings\Nilo\My Documents\Work\Testing\main.cpp || In function 'int main()':| C:\ Documents and Settings\Nilo\My Documents\Work\Testing\main.cpp | 8 |エラー:「システム」はこのスコープで宣言されていません||

| ===ビルドが完了しました:1エラー、0警告=== |

18
Nilo Cortex

以下を追加する必要があります。

_ #include <cstdlib>
_

コンパイラがsystem()のプロトタイプを見るために。

54
Paul R

system()を宣言するヘッダーファイルが含まれていない可能性があります。

自分で(手動で)宣言しない関数を使用するC++コードをコンパイルできるようにするには、宣言をプルする必要があります。これらの宣言は通常、いわゆるヘッダーファイルに格納され、_#include_プリプロセッサディレクティブを使用して現在の翻訳単位にプルします。コードはsystem()が宣言されているヘッダーファイル__#include_ではないため、コンパイルは失敗します。

この問題を修正するには、どのヘッダーファイルがsystem()の宣言を提供しているかを調べ、それを含めます。他のいくつかの回答で述べたように、おそらく_#include <cstdlib>_を追加する必要があります

13
Timo Geusch