为什么C++语言不允许在一个函数的定义中再定义另一个函数? 举个例子说明,谢谢

2024-11-18 15:27:58
推荐回答(3个)
回答(1):

c++中允许函数的嵌套调用,但不允许函数的嵌套定义,例如:

#include
int SwpInt(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
return a;
}
void main()
{
int e=12;
int f=89;
SwpInt(&e,&f);
cout<}
这样定义是对的,但是如果如下定义就会出现编译错误:

#include
void main()
{
int e=12;
int f=89;
int SwpInt(int *a,int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
return a;
}
SwpInt(&e,&f);
cout<}

error C2601: 'SwpInt' : local function definitions are illegal

回答(2):

编语言的人就这么设计啊,你如果会编的话自己设计一个语言就能作到在一个函数的定义中再定义另一个函数了

回答(3):

//头文件test.h
void f();
//源文件test.cpp
#include"test.h"
void f(){... g();...}
提示找不到函数g().

一般函数的声明与定义放在不同文件中,声明的头文件中只有嵌套定义的外层函数,嵌套在函数f中的函数是找不着的。。。