我对后面的C函数,f_2()感到困惑.它是用.c文件写的,代码可以由GCC编译.此函数样式的名称是什么?如何解释这个函数的含义?这是标准的C还是某个GCC的分机?谢谢.

void f_1()
{
}

int (*f_2(void *param)) (int, void *) {
    return 0;
}

int main()
{
  f_2(NULL);
  return 0;
}

推荐答案

函数f_2接受void *个参数,并返回指向函数的指针.

f_2返回的指针是指向一个函数的指针,该函数接受两个参数(intvoid *)并返回int.

这相当于:

// Create a type-alias for a function pointer
typedef int (*function_pointer_type)(int, void *);

// Define a function that returns a pointer to a function
function_pointer_type f_2(void *)
{
    return NULL;
}

C++相关问答推荐

如何避免使用相对路径包含在c中

为什么信号量为空= 0,而不是阻塞?

为什么I2C会发送错误的数据?

如何知道我是否从非阻塞套接字读取所有内容

CGO:如何防止在使用CGO在包中包含C头文件时出现多个定义...&q;错误?

用C语言计算文本文件中的整数个数

<;unistd.h>;和<;sys/unistd.h>;之间有什么区别?

为 struct 中的数组动态分配内存时出错

预处理器宏扩展(ISO/IEC 9899:1999(E)§;6.10.3.5示例3)

C语言中的数字指针

这段代码用于在C中以相反的顺序打印数组,但它不起作用

具有正确标头的C struct 定义问题

使用C++中的字符串初始化 struct 时,从‘char*’初始化‘char’使指针变为整数,而不进行强制转换

如何在C宏定义中包含双引号?

生成一个半RNG,结果用C表示(无随机/随机)

将复合文字数组用作临时字符串缓冲区是否合理?

try 判断长整数是否为素数

解密Chrome加密密钥

将char*数组深度复制到 struct 中?

快速准确计算double的小数指数