功能原型/定义

时间:2014-12-20 07:48:13

标签: c++ c

如果我们没有提到函数原型,从main调用函数并在main之后写出定义它给出了一个错误。如果我们在main之前编写函数定义并且不编写原型,程序工作正常。所以我的问题是如果我们在main之前编写函数定义(没有编写原型)它是否解决了不声明函数原型的问题(即编译器将从上到下开始读取并仍然能够知道函数名,返回类型,参数等)

3 个答案:

答案 0 :(得分:0)

定义没有先前原型的函数在语义上等同于在定义函数之前立即声明原型。所以是的,它是安全的:在使用函数之前定义一个没有原型的函数,可以正常工作。

答案 1 :(得分:0)

当您调用该函数时,编译器会进入函数定义。虽然参数和返回类型检查参考函数原型。所以,你可以安全地发出函数原型......

答案 2 :(得分:0)

是(对于C ++),编译器会接受这个。要调用函数编译器,必须先查看其原型或定义。翻译单元(cpp)文件也是从上到下编译的,所以:

void foo();
void foo2() {
}

int main() {
   foo();
   foo2();
}

void foo() {
}

都是正确的。如果你提供foo()原型而不在main()下面定义foo,编译器仍会接受你的代码,但链接器会抱怨错误。