Ykt*_*ula 13 c pointers void-pointers
假设一个函数将void指针作为参数,如下所示:int func(void *p);
我们如何确定或猜测p指向的类型?
Whi*_*ind 25
一般来说,你不能.在某些情况下,如果对p指向的内容有保证,您可以查看该地址及其后的内容以查找.一般来说,你的函数应该知道它传递的是什么,除非它只是传递它.
C中的数据和函数参数只是一堆混合在一起的.除非你使用其中一些位来告诉你这些位是什么,否则没有一致的方法来识别它.
当然可以,也很容易.它是C,做你想做的任何事,你想要它.
制作一个类型系统.将您传递的所有内容放入结构中,使第一个或第二个字节成为幻数,以确定结构包含的超出幻数的内容.
创建一些函数来创建/获取/设置/销毁"类型变量".
创建一些其他函数以在运行时添加和注册新类型.
创建一些定义,以便更容易阅读和类型化结构.
在您了解它之前,您将拥有一个可以用于您的项目的良好的专有类型系统,并且它将始终完全按照您的要求完成您想要和需要的系统.
你可能会发疯并将其发展成一个面向系统的完整对象.或者保存自己的工作,并使用已经疯狂的所有其他人的工作 - http://en.wikipedia.org/wiki/GObject
| 归档时间: |
|
| 查看次数: |
8811 次 |
| 最近记录: |