gpt4 book ai didi

c++ - 函数指针定义中是否允许使用参数名称

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:39 24 4
gpt4 key购买 nike

所以我刚刚看到了一个使用命名参数的函数指针声明的例子:

int (*func)(int a, int b) = &foo;

我假设这是定义良好的代码,因为它可以正常编译和运行:https://ideone.com/C4mhsI

但我以前从未见过这个(可能是因为它增加了已经难以解析的函数指针的复杂性。)尽管如此,我还是希望看到一个声明,说明这是合法的,而不是一些疯狂的 gcc 扩展。有人可以帮我找东西吗?

最佳答案

您可以遵循 declarator 的语法,这是一个没有任何类型或声明说明符的声明。

declarator:
ptr-declarator
[...]

ptr-declarator:
noptr-declarator
ptr-operator ptr-declarator

noptr-declarator:
[...]
noptr-declarator parameters-and-qualifiers
( ptr-declarator )

parameters-and-qualifiers:
( parameter-declaration-clause ) [...]

ptr-operator:
* attribute-specifier-seq[opt] cv-qualifier-seq[opt]
[...]

我删除了所有不需要的语法规则,以便能够更轻松地遵循它。我不会这样做,因为写下来有点痛苦,但最后你会发现你有代表参数的parameters-and-qualifiers

如果您为函数执行此操作,您会发现它也以参数和限定符 结尾。它们使用相同的语法,并且在 [decl.ptr] 下的标准中没有禁止这样做.

关于c++ - 函数指针定义中是否允许使用参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48240603/

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