1. ホーム
  2. c++

[解決済み] c++の関数が引数を0個取らない

2022-02-15 15:52:20

質問

なぜ このエラー この関数は引数を 0 個も取らないというコンパイラからの指摘は?これは、関数が呼び出された後に宣言したからでしょうか?

// HelloWorld.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>


using namespace std;

int main()
{
    cout << "Hello World!\n";
    cout << "Game over!\n";
    swap();
    system("pause");
    return 0;
}

int swap()
{
    int on = 1;
    int off = 0;
    int temp = on;
    on = off; 
    off = temp;
    return 0;
}

解決方法は?

<ブロッククオート

関数が呼び出された後に宣言しているからでしょうか?

はい、そうです。

の呼び出しがコンパイラに認識されるまでに。 swap() しかし、この関数はまだあなたのことを知りません。この場合、通常は「宣言されていない関数の呼び出し」というエラーが出ますが、もし std::swap (引数を2つ取る) を名前空間に引き込んでいる。 using namespace std ディレクティブを使用します。

修正するために の定義を移動する。 swap 上記 main (関数定義は常に関数宣言でもあるため)あるいはそのままにして、専用の宣言を置く。

int swap();

上記 main . また using namespace std; のような標準ライブラリの型や関数の前に、明示的に std:: . しかし、それは必須ではありませんし、今回の問題の根本原因でもありません。