完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
void *p; int FuncInt(int x,int y) { return 1; } int main(void) { p = FuncInt; } 上面这段代码在Keil里面没有错误和警告, 在IAR里面会提示错误:Error[Pe513]: a value of type "int (*)(int, int)" cannot be assigned to an entity of type "void *" |
|
相关推荐
10个回答
|
|
所以,问题是什么?
|
|
|
|
使用void * 相比于void 能提高代码的运行速度,我看的一本C语言教材里面提到了。
|
|
|
|
p = (void *)FuncInt;
|
|
|
|
楼上得使用强制转换也可以,但是这个问题还是怎么说呢,C语法是一个严格定义得语法,keil这个bitch,有时候会不按照C语法规则来搞事情,IAR就比较好。。。所以从规则上来说,IAR提示错误肯定是正确得,但是keil这么做,是有问题得,检查得不够严格。。。
|
|
|
|
|
|
|
|
怎么说呢,void定义得类型是任何都可以赋值,而且这个是数据类型,函数调用得时候涉及到参数,返回值,不管是从代码检测或则习惯上来说,函数调用得时候严格检测比较好,至于数据类型得变量,使用得时候,好像是需要强制转换得(也即是需要明确数据类型)!!!最后做个总结,其实我是不太推荐用void,因为不管是代码质量还是习惯,C语言本身就是一个非常严谨得语法。。。当然了,也不能因噎废食,比如在局部某些地方使用得时候,可以到达很好得效果还是推荐使用的!!! |
|
|
|
p 没定义成void *
|
|
|
|
所以你到底想做什么?这个函数返回的是一个int类型,所以你要么强制类型转换,或者直接把p定义为int*
|
|
|
|
加个强制转换即可
|
|
|
|
试试看了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1085 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1041 浏览 2 评论
2145 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1240 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1660 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 21:14 , Processed in 0.608796 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号