作者a27417332 (等号卡比)
看板C_and_CPP
标题[问题] 关於函数指标的参数型别转型
时间Sun Jun 25 22:33:32 2017
不好意思,想请教版上的大大:
在C99以後,以这个问题来说:
https://goo.gl/aeLCxN
为甚麽void*是不相容於struct my_struct*?
在C中,void*不是可以和非函数指标互转,并保证在转回去以原型别解引用时会正确?
但这边好像并不是这个意思?
自己在网路上找了一些关键字,但还是不能理解这个结论的原因。
还希望有大大能指点一下m(_ _)m
另外,在C++中,void*转到T*(不为函数指标)是需要显式转换的,
而T*(不为函数指标)转到void*是可以被隐式转换的。
想问下这个规则是标准的哪里?还是我有误解的地方?
不好意思了,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.13.151
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1498401215.A.09D.html
1F:推 littleshan: compatible type有严格的定义,基本上就是相同的type 06/25 23:13
2F:→ littleshan: 「可以互转」并不表示它们是compatible type 06/25 23:13
原来如此!
另外想再问一下这篇:
https://goo.gl/VnXBVn
为甚麽这篇底下说如果满足那个转型的假设,就可以让这个转型的行为符合预期?
印象中任何非函数指标转到char*,都是可行的。
void*和char*的对齐要求有可能不一样吗?
(参考自这篇:
https://goo.gl/UyQr15)
还麻烦各位大大了,感激不尽m(_ _)m
※ 编辑: a27417332 (36.225.123.68), 06/26/2017 14:06:04