Jon*_*Mee 2 c++ parameters function-pointers named-parameters language-lawyer
所以我刚看到一个使用命名参数的函数指针声明示例:
int (*func)(int a, int b) = &foo;
Run Code Online (Sandbox Code Playgroud)
我假设这是定义良好的代码导致它编译并运行良好:https://ideone.com/C4mhsI
但我以前从未见过这个(可能是因为它增加了已经难以解析的函数指针的复杂性.)尽管如此,我还是希望看到一个声明,这是合法的,而不是一些疯狂的gcc扩展.有人能找到我的东西吗?
您可以遵循声明符的语法,这是一个没有任何类型或decl说明符的声明.
Run Code Online (Sandbox Code Playgroud)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] [...]
我删除了所有不需要的语法规则,以便能够更轻松地遵循它.我不会这样做,因为写下来有点痛苦,但最后你会发现你有参数和资格来代表参数.
如果你为一个函数执行它,你会发现它也以参数和限定符结束.他们使用相同的语法,并且在[decl.ptr]下的标准中没有任何禁止这一点.
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |