より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

C++では関数を先に宣言しないとコンパイルエラー

久しぶりにC++をやっていて、大事なことを忘れていました。

以下のソースはコンパイルエラーとなります。

#include <iostream>

using namespace std;

int main() {
    cout << "半径10の円の面積:" << getCircleArea(10) << endl;
    return 0;
}

// コンパイルエラー

double getCircleArea(double r) {
    return r * r * 3.14;
}

f:id:rimever:20190818204648p:plain

原因は宣言順序の問題です。

getCircleAreaメソッドが宣言される前に呼び出されているため、コンパイルエラーです。

C++より後に出てきた言語では、そういうことを気にしないで済むので忘れがちです。

ただ、これを防ぐ方法もあって、プロトタイプ宣言をしていれば防ぐことが出来ます。

#include <iostream>

using namespace std;

//プロトタイプ宣言
double getCircleArea(double r);

int main() {
    cout << "半径10の円の面積:" << getCircleArea(10) << endl;
    return 0;
}

double getCircleArea(double r) {
    return r * r * 3.14;
}

f:id:rimever:20190818204746p:plain