C 的功能声明
Function Declaration in C++
我在CPP中具有以下代码。
//My code
#include<iostream>
using namespace std;
int main()
{
int a;
int display();
int printfun(display());// Function prototype
printfun(9);//Function calling
return 0;
}
int printfun(int x)
{
cout<<"Welcome inside the function-"<<x<<endl;
}
int display()
{
cout<<"Welcome inside the Display"<<endl;
return 5;
}
汇编后,它会引发错误" line8:'printfun'不能用作函数"。
但是,当我在显示功能中进行printFun调用时,相同的代码可以很好地工作。
#include<iostream>
using namespace std;
int main()
{
int a;
int display();
int printfun(display());// Function prototype
return 0;
}
int printfun(int x)
{
cout<<"Welcome inside the function-"<<x<<endl;
}
int display()
{
printfun(9); // Function call
cout<<"Welcome inside the Display"<<endl;
return 5;
}
任何人都可以解释此背后的原因吗?
int printfun(display());// Function prototype
这不是功能原型。这是一个可变声明,等效于:
int printfun = display();
函数原型可以在main()内完成,但是将它们放在源文件的顶部更为正常。
#include <iostream>
using namespace std;
// Function prototypes.
int display();
int printfun(int x);
int main()
{
int a;
printfun(9); // Function call.
return 0;
}
// Function definitions.
int printfun(int x)
{
cout << "Welcome inside the function-" << x << endl;
}
int display()
{
printfun(9); // Function call.
cout << "Welcome inside the Display" << endl;
return 5;
}
在此语句中
int printfun(display());// Function prototype
您定义一个用名称printFun的对象,该对象由函数呼叫display的返回值()初始化。正如您所想的那样,这不是函数声明。
因此,printFun是类型int然后表达式
的对象printfun(9);//
没有任何意义,编译器会出错。
在第二种情况下,编译了代码,因为函数显示看到全局名称printFun被声明为函数名称。MAIN内部不可见printfun。实际上,您对MAIM和全局函数名称中定义的本地变量使用相同名称,该变量是在全局名称空间内声明的函数名称。功能显示看到此全局名称。
相关文章:
- 对可变参数使用声明.如何选择正确的功能
- 在气泡排序程序中未声明错误功能
- 引用 using 声明引入的功能的句子是什么意思?
- 朋友功能声明中的错误C
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 如何实现声明功能-C 11,编译时间
- 如何使用C 中的元编程声明多功能
- 如何声明功能接受rvalue的任意长度阵列
- C |声明类外部功能
- 您可以声明会员功能并使他们做不同的事情吗?
- Forward宣布了Singleton班级,并带有Freshial声明的朋友功能
- 打印功能的地址..声明
- 如何将指针声明以在类初始化器中的成员功能并拨打这些指针
- 功能未在范围(GLFW,OpenGL,Slackware)中声明
- C 1Z标准如何定义模板功能声明中属性的正确位置
- 从模板参数中声明功能指针中的模板类中
- 在C 中多次声明功能和变量
- 没有模板就无法声明C 功能
- 在定义模板后声明功能
- 如何声明功能向量(lambdas)