函数指针编译时出错怎么办?

一口Linux
关注

1. 问题

粉丝提问:某个函数指针的使用:编译时出错了。

type defaults to 'int' in declaration of 'on_touch_messgae_handle'[-Wimplicit-int] typedef(*on_touch_messgae_handle)(touch_message_t);


粉丝源码如下:


2. 分析

 1)  结构解析 

1 struct touch_message                                                        
 2 {
 3     rt_uint16_t x;
 4     rt_uint16_t y;  
 5     rt_uint8_t event;  
 6 };
 7 typedef struct touch_message * touch_message_t;
 8 typedef (*on_touch_messgae_handle)(touch_message_t);

首先看下7行这个类型定义:

typedef struct touch_message * touch_message_t;

定义后

touch_message_t

等价于

struct touch_message *

就是说我们如果用touch_message_t 定义的变量是一个struct touch_message类型的一个指针。

再来分析下8行这个定义:

typedef (*on_touch_messgae_handle)(touch_message_t);

可以替换成下面这个定义

typedef (*on_touch_messgae_handle)(struct touch_message *);

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存