【发布时间】:2017-03-15 08:17:54
【问题描述】:
我在C 中编译了以下程序,但没有前向声明函数。它已成功编译并在GCC 中运行,没有任何警告或错误。
#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 开始就不再在 C 中了
-
“为什么 C++ 编译器会出错?” 像往常一样:因为标准是这样说的。
-
@CraigYoung 将其读作“no fwd decl ...”
-
问题标题是否只是抱怨,说明 C++ 需要在使用函数之前进行声明,因此在某些情况下需要“前向声明”?
-
@SouravGhosh - 具有讽刺意味的是,现代 C 和 C++ 同意这一点:)
标签: c++ c forward-declaration function-prototypes