gpt4 book ai didi

c - 为什么 C 中的嵌套函数违反 C 标准

转载 作者:太空宇宙 更新时间:2023-11-04 06:16:53 24 4
gpt4 key购买 nike

C 标准(ANSI[C89]、C99、C11)不允许嵌套函数( block 作用域中的函数声明)。

但我找不到 C 标准中的说明。

编辑:

为什么函数定义不能在函数定义(复合语句)中?

最佳答案

函数声明和函数定义是有区别的。声明仅声明函数的存在,而定义则定义函数。

int f(void) { /* ... */ } // function definition
int f(void); // function declaration

在 6.9.1 中,函数的语法定义为

函数定义: declaration-specifiers declarator declaration-listopt compound-statment

在 6.8.2 中,可以放在复合语句中的内容定义为声明语句。函数定义在句法上不被认为是这些中的任何一个。

所以是的,函数声明在函数中是合法的,但函数定义不是例如

int main(int argc, char*argv[])
{
int f(void); // legal
int g(void) { return 1; } ; // ILLEGAL

// blah blah
}

关于c - 为什么 C 中的嵌套函数违反 C 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43584232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com