C
に前方宣言関数を持たない次のプログラムをコンパイルしました。それは正常にコンパイルされ、警告またはエラーなしでGCC
で実行されます。C++で前方宣言が欠落する問題
#include <stdio.h>
int main()
{
int ret = func(10, 5);
}
int func(int i, int j)
{
return (i+j);
}
しかし、私は前方C++
で関数を宣言しなくても、次のプログラムをコンパイルして、コンパイラは私にエラーを与えます。
#include <iostream>
using namespace std;
int main()
{
int ret = func(10, 5);
}
int func(int i, int j)
{
return (i+j);
}
エラー:
fl.cpp:6:22: error: ‘func’ was not declared in this scope
int ret = func(10, 5);
^
C++コンパイラはエラーを与えるのはなぜ?デフォルトではint型のデータ型ではありませんか?
決して、もはやCで99 – StoryTeller
以来*「なぜC++コンパイラはエラーになります?」*いつものように:標準がそう言うので。 –
@CraigYoungは "no fwd decl ..."と読んでいます。 –