硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3122|回复: 8
收起左侧

有个结构体声明没看懂,求解惑

[复制链接]

36

主题

142

回帖

250

积分

高级会员

积分
250
发表于 2017-6-1 10:45:10 | 显示全部楼层 |阅读模式
typedef struct{
    int16 *dbuffer_ptr;                        /*
    int16 offset;
    struct RESULT_LOCK *lock;               
    void (*Decode_A)(void*);           //这里是一个函数
    struct SIG_RESULT *output;               
}DECODE;

typedef DECODE  *DECODE_HANDLE;

void Decode_A(DECODE_HANDLE);   

Decode_A()函数是有参数输入的啊  为什么在结构体中声明成了void (*Decode_A)(void*;不懂 。希望帮我解答一下我的疑惑
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2017-6-1 10:53:19 | 显示全部楼层
void (*Decode_A)(void*);        和  void Decode_A(DECODE_HANDLE);    应该没有关系吧。

    void (*Decode_A)(void*);  里面的Decode_A是函数指针变量。

void Decode_A(DECODE_HANDLE);  就是这个函数,

只是两个定义的名字一样了。
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2017-6-1 13:47:53 | 显示全部楼层
我可以确定void (*Decode_A)(void*); 和  void Decode_A(DECODE_HANDLE);  他两就是一个函数,只不过在结构体里声明成void (*Decode_A)(void*);   这样了
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2017-6-1 13:49:23 | 显示全部楼层
void (*Decode_A)(void*);           //这里是一个函数  
后面注释也说他是一个函数
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2017-6-1 14:00:17 | 显示全部楼层
void (*Decode_A)(void*);  里面的Decode_A是函数指针变量。 如果他不是一个函数,只是一个指针变量,前面不能加 void 吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2017-6-1 14:00:27 | 显示全部楼层
这个void (*Decode_A)(void*);就是这个函数指针声明,这个指针变量Decode_A可以指向任意函数,我这么说对不对。(返回值当然可以是void,表示无返回数据,要不无数值返回的函数指针怎么声明)

如果有关系只能是指针变量Decode_A去指向这个函数void Decode_A(DECODE_HANDLE);   


另外,这个函数指针声明不是有参数么,void * 就是参数,未指定类型的指针变量。
回复

使用道具 举报

36

主题

142

回帖

250

积分

高级会员

积分
250
 楼主| 发表于 2017-6-1 14:08:36 | 显示全部楼层
好像有点懂了,这么用我真是好蒙圈,void Decode_A(DECODE_HANDLE);  这里的参数就是我声明的结构体 。
回复

使用道具 举报

0

主题

2

回帖

0

积分

新手上路

积分
0
发表于 2017-10-27 18:31:06 | 显示全部楼层
void (*Decode_A)(void*);中的Decode_A是函数指针。应该是能传进参数去,只不过参数是void*类型的吧。
void Decode_A(DECODE_HANDLE);  是个函数。来处理DECODE_HANDLE结构体的吧。
回复

使用道具 举报

0

主题

9

回帖

9

积分

新手上路

积分
9
发表于 2019-1-15 19:49:31 | 显示全部楼层
void是十分方便,也是很邪恶的,可以表示任何类型的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 13:26 , Processed in 0.208572 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表