在C中,当我们想要为以下类型的函数定义函数指针时:

int f(int x, int y);

我们将函数指针变量定义为

int (*fp)(int, int);

我的问题是,下面这行在C中(没有*)是什么意思,因为GCC,编译时没有错误

int (fp)(int, int);

谢谢

推荐答案

int (fp)(int, int);

是名为fp的函数的forward declaration.

它不声明或定义变量.这就像在任何其他名称周围使用括号一样,例如(x) + (y).

简而言之,这和

int fp(int, int);

C++相关问答推荐

如何将FileFilter添加到FileDialog GTK 4

如何在Visual Studio代码中关闭此函数名称显示功能?

为什么GCC可以调用未定义的函数?

ZED for SDL上的C语言服务器

将指针作为参数传递给函数

如果包含路径不存在,我的编译器可以被配置为出错吗?(GCC、MSVC)

C语言中的strstr问题

_泛型控制表达式涉及数组碰撞警告的L值转换错误?

在CLANG中调试预处理器宏

VS代码';S C/C++扩展称C23真关键字和假关键字未定义

判断X宏的空性

#定义SSL_CONNECTION_NO_CONST

如何将两个uint32_t值交织成一个uint64_t?

从另一个宏函数调用C宏

未使用sem_open正确初始化信号量

在NASM中链接Linux共享库时出错-';将R_ X86_64_;foo';

既然我们在 if 中将 int 的值更改为 10,为什么在第二个 fork 后,子进程及其创建的子进程都会打印 33 ?

这些表达式是否涉及 C 中定义的复合文字?

多行表达式:C 编译器如何处理换行符?

如何在 C 中的 Postgres 函数的表中 for 循环