- 主题:C可以做泛型吗?
反射是指在通用的程序中,处理任意struct的能力。
比如,将任意的struct序列化。
这这需要知道struct的成员,名称,类型,长度,位置。
写这个程序,不知道来的是哪个struct,没有反射,就无法写出这种程序。
反射就是在运行时查询struct的成员参数。
【 在 freyoneby 的大作中提到: 】
: 什么是反射?
: - 来自 水木社区APP v3.5.7
--
修改:ylh1969 FROM 221.221.50.*
FROM 221.221.50.*
C语言不知道struct的信息?你是指只生声明了一个指针?还是不懂,有来段简单代码
- 来自 水木社区APP v3.5.7
【 在 ylh1969 的大作中提到: 】
: 反射是指在通用的程序中,处理任意struct的能力。
: 比如,将任意的struct序列化。
: 这这需要知道struct的成员,名称,类型,位置。
: 写这个程序,不知道来的是哪个struct,没有反射,就无法写出这种程序。
--
FROM 114.86.131.*
真实数据访问实现中要考虑了类型的对齐,大小
addr, [<type, align, size>, ...]
把这些信息和内存地址作为参数传入,应该就能实现你需要的能力
【 在 ylh1969 的大作中提到: 】
: 反射是指在通用的程序中,处理任意struct的能力。
: 比如,将任意的struct序列化。
: 这这需要知道struct的成员,名称,类型,长度,位置。
: ...................
--
FROM 120.231.170.*
他说的不是预先定义的数据结构体
比如通过socket接收到110字节,如何在接收端转换成它发送端的结构并访问其中的成员
这就要知道这110字节包含多少字段,每个字段类型大小对齐方式等等
才能实现特定字段的访问
【 在 freyoneby 的大作中提到: 】
: C语言不知道struct的信息?你是指只生声明了一个指针?还是不懂,有来段简单代码
: - 来自 水木社区APP v3.5.7
--
FROM 120.231.170.*
其他语言就可以了?
- 来自 水木社区APP v3.5.7
【 在 hehao 的大作中提到: 】
: 他说的不是预先定义的数据结构体
: 比如通过socket接收到110字节,如何在接收端转换成它发送端的结构并访问其中的成员
:
: 这就要知道这110字节包含多少字段,每个字段类型大小对齐方式等等
: 才能实现特定字段的访问
--
FROM 114.86.131.*
别搞这些。
C就是计算机的最小抽象了,流程,内存,文件,加上别的东西就直接用c++算了,别搞这些。
【 在 ylh1969 的大作中提到: 】
: 像C++的STL?
: 有人做过,还行。
: 本版太凉快了,灌点水。
--
FROM 115.171.113.*
kernel里的list_entry 就是最基本的泛型吧
【 在 ylh1969 的大作中提到: 】
: 像C++的STL?
: 有人做过,还行。
: 本版太凉快了,灌点水。
: ...................
--
FROM 111.55.204.*
c还可以做面向对象编程
【 在 ylh1969 的大作中提到: 】
: 像C++的STL?
: 有人做过,还行。
: 本版太凉快了,灌点水。
: --
:
: FROM 221.218.61.* [北京–海淀区 联通]
--发自 ismth(丝滑版)
--
FROM 36.110.18.*
如果写一个通用的序列化程序,接受一个struct指针。
通用,即任意的struct,写程序的时候,并不知道是什么struct,只能用void *。
【 在 freyoneby 的大作中提到: 】
: C语言不知道struct的信息?你是指只生声明了一个指针?还是不懂,有来段简单代码
: - 来自 水木社区APP v3.5.7
--
FROM 221.221.50.*