gpt4 book ai didi

c - 为什么函数指针的 typedef 不同于常规的 typedef?

转载 作者:太空宇宙 更新时间:2023-11-04 05:17:40 27 4
gpt4 key购买 nike

typedef经常像这样工作:typedef <type> <type_alias> .但是函数指针的 typedef 似乎有不同的结构:typedef int (*fn)(char *, char *); - 没有类型别名,只有一个函数签名。

示例代码如下:

#include <stdio.h>

typedef void (*callback)(int);

void range(int start, int stop, callback cb) {
int i;
for (i = start; i < stop; i++) {
(*cb)(i);
}
}

void printer(int i) {
printf("%d\n", i);
}

main(int argc, int *argv[])
{
if (argc < 3) {
printf("Provide 2 arguments - start and stop!");
}

range(atoi(argv[1]), atoi(argv[2]), printer);
}

所以 - 为什么 typedef函数指针的 s 不同?

最佳答案

使用 typedef 定义函数指针类型的语法遵循与定义函数指针相同的语法。

int (*fn)(char *, char *);

fn 定义为指向函数 ... 的指针

typedef int (*fn)(char *, char *);

fn 定义为指向函数 ... 的指针类型

关于c - 为什么函数指针的 typedef 不同于常规的 typedef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com