函数指针没有参数类型?

rul*_*lof 5 c pointers

我试图声明一个指向任何返回相同类型的函数的函数指针.我省略了指针声明中的参数类型,以查看将生成什么错误.但该程序编译成功并执行没有任何问题.

这是正确的声明吗?我们不应该指定参数类型吗?

#include <stdio.h>
#include <stdlib.h>

void add(int a, int b)
{
    printf("a + b = %d", a + b);
}

void (*pointer)() = &add;

int main()
{
    add(5, 5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

a + b = 10
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 6

类型名称中的空括号表示未指定的参数.请注意,这是一个过时的功能.

C11(ISO/IEC 9899:201x)§6.11.6函数声明符

使用带有空括号的函数声明符(不是prototype-format参数类型声明符)是一个过时的功能.


Day*_*rai 5

void (*pointer)()解释函数指向有未指定数量的参数.它与...不相似void (*pointer)(void).所以后来你根据定义使用了两个成功拟合的参数.