|
1
20
其他人都给了您规范化的答案“标准C中不允许使用嵌套函数”(因此,它们的任何使用都取决于编译器)。 您修改的示例是:
因为你说像积分器这样的函数需要
我不明白为什么你真的需要嵌套函数。我想写:
上面的代码应该在C89(除非这样初始化“par”有问题)或C99中工作;此版本的代码仅适用于C99,使用参数的复合文字(第6.5.2.5节复合文字):
“struct-parameters”类型只有几个变体的可能性非常大。您确实需要为各种函数提供单独的(足够)有意义的名称-您只能有一个函数调用'
嵌套函数版本的唯一边际、微小的好处是,您可以确保除了
|
|
|
2
30
嵌套函数可用作 language extension in GCC 但它们不是标准语言的一部分,因此某些编译器不允许使用它们。 |
|
|
3
8
C没有嵌套函数。gcc的嵌套函数是该语言的扩展。
gcc中的运行时错误是拼写错误。
|
|
|
4
6
正如上面许多答案所提到的,C中不支持内部函数,但是内部函数 班 可以用C++来完成类似的事情。不幸的是,它们使用起来有点笨拙,但如果你不介意编译为C++,那么它可能是你的选择。 未测试示例:
注意,这个答案不应该意味着我认为在您所展示的用法中,内部函数是一个好主意。 年后编辑: 现在C++允许我们使用lambdas作为内部函数。在我上面的玩具例子中,它看起来很像这样:
注意,局部变量x是在lambda内部自动捕获的,这是一个非常好的特性。 |
|
|
5
3
您使用的是嵌套函数-c不支持这样的功能。 |
|
|
6
1
这不是有效的C代码,C中不支持内部函数 |
|
|
7
1
函数内部的局部函数定义在C中是非法的。 |
|
|
8
1
嵌套函数不是C标准的一部分。因此,不能保证它对所有编译器都有效,并且应该绝对避免。 |
|
|
9
1
|
|
|
10
0
我不是专家,但我敢打赌这是C99规范明确不允许或未定义的,所以最好远离它。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |