Mar*_*tos 33
不,他们不存在于C.
它们在Pascal等语言中使用(至少)有两个原因:
CB *_*ley 15
不,你不能拥有嵌套功能C.最接近的是在另一个函数的定义中声明一个函数.但是,该函数的定义必须出现在任何其他函数体之外.
例如
void f(void)
{
// Declare a function called g
void g(void);
// Call g
g();
}
// Definition of g
void g(void)
{
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我提到这一点是因为许多用C进行编码的人现在都在使用C ++编译器(例如Visual C ++和Keil uVision)来执行此操作,因此您可以使用此功能...
尽管尚未在C中允许,但是如果您使用的是C ++,则可以使用C ++ 11中引入的lambda函数达到相同的效果:
void f()
{
auto g = [] () { /* Some functionality */ }
g();
}
Run Code Online (Sandbox Code Playgroud)