以下是根据ISO/IEC 9899:2017(c17)的标准C函数声明吗?
int foo(int (bar), int (baz));
如果是这样,请给我指出标准中定义这一点的章节.
在N2310附录短语 struct 语法,A.2.2声明,第6.7.6节中,我看到以下内容:
parameter-list:
parameter-declaration
parameter-list , parameter-declaration
我不熟悉这种语法表达,所以我不知道如何解释它.
下面的程序编译时不会出现gcc --std=c17 -Wall
和clang --std=c17 -Wall
错误
static int foo(int (bar), int (baz));
static int foo(int bar, int baz)
{
return bar + baz;
}
int main() {
return foo(1, 2);
}
然而,如果我在这个程序上运行cppcheck
(一个静态分析工具),它似乎解析不正确.
我最感兴趣的是这个语法是标准的C,还是编译器特定的行为,这样我就可以try 修复解析器或提交错误报告,如果我做不到的话.