gpt4 book ai didi

c - 除了与函数指针一起使用之外,是否还有在 C 中对函数进行类型定义的目的?

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:37 25 4
gpt4 key购买 nike

下面的代码是有效的C:

typedef int math_op(int, int);//函数类型定义

我唯一一次看到声明然后使用的函数类型是在我们进行如下语句的情况下:

math_op *mOp = add;

add 可能是:

int add(int a, int b)
{
return a + b;
}

在给定初始声明的情况下,以下内容也会编译:math_op mOp;

不过,这里并没有声明为函数指针,而是声明为函数本身。但是,我不知道它的实际用法,并且发现它非常令人困惑,因为我们似乎在声明一个没有实际定义的函数。

我的问题是,除了像这样将 typedef 函数用作函数指针类型之外,是否还有任何其他用法?请注意,我已经知道替代函数指针类型语法 typedef int (*math_op)(int,int); 创建一个 函数指针 类型,而我的原始语法上面创建了一个我们稍后指向的函数类型

最佳答案

根据clang:

error: non-object type 'math_op' (aka 'int (int, int)') is not assignable: math_op tee = 0;

所以这确实限制了我们的选择。

我能找到的唯一用途是如果你想转发声明一堆具有相同类型签名的函数。这可能不是一个好主意,可能会增加 WTF's / line你的代码。

math_op tee;
int tee (int x, int y) {
return x + y;
}

关于c - 除了与函数指针一起使用之外,是否还有在 C 中对函数进行类型定义的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54963739/

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