选项1:排序函数调用,所以()定义在main():
23456789#include <iostream> int add(int x, int y); // forward declaration of add() using function prototype int main(){ std::cout << "The sum of 3 and 4 is: " << add(3, 4) << std::endl; return 0;}这样,通过时间main()()调用,编译器会知道什么是()。因为这是一个简单的程序,这种变化相对容易做。然而,在一个更大的程序,它可以是乏味的试图找出哪些函数调用哪些其他功能(以何种顺序),以便它们可以被顺序声明。此外,这个选项并不总是可能的。假设我们正在编写一个程序,它有两个函数A和B。如果函数是一个调用函数B,函数B调用函数A,那么就没有办法在函数中排序,它们都会很高兴。如果你定义了第一个,编译器会抱怨它不知道B是什么。如果你先定义B,编译器会抱怨它不知道是什么。函数原型和函数的前向声明选项2:使用前向声明。前向声明允许我们在实际定义标识符之前告诉编译器关于标识符的存在。在函数的情况下,这允许我们在定义函数的主体之前告诉编译器关于函数的存在性。这样,当编译器遇到对函数的调用时,它会理解我们正在做一个函数调用,并且可以检查以确保我们正确地调用函数,即使它还不知道该函数是如何或在何处定义的。为函数编写一个前向声明,我们使用一个声明语句,称为函数原型。函数原型包括函数的返回类型、名称、参数,但没有函数体(卷括号之间的一部分)。因为函数原型声明,它以分号结束。int add(int x, int y) // defines function add(){ return x + y;} int x; // instantiates (causes memory to be allocated for) an integer variable named x
新闻热点
疑难解答