- 主题:C可以做泛型吗?
像C++的STL?
有人做过,还行。
本版太凉快了,灌点水。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
c还可以做另一种泛型:运行时泛型。
比如做通用的二叉树,通用排序,二分法检索,可以处理任意类型。
实现了程序与数据独立,但是没有实现算法与数据结构独立。
【 在 ylh1969 的大作中提到: 】
: 像C++的STL?
: 有人做过,还行。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
C语言的宏就是最原始的泛型。
【 在 ylh1969 的大作中提到: 】
: 像C++的STL?
: 有人做过,还行。
: 本版太凉快了,灌点水。
--
FROM 223.104.40.*
可以这么说。
STL本质就是宏。
但是无论宏或STL,都解决不了一个问题。
在客户端与服务器互联中,需要传输一些不同的结构体数据,这个遇到很多麻烦。
服务器与客户端可能对一个结构体产生不同的内存布局。
因此出现了序列化和反序列化的需求。
一个较大的应用系统,可能需要几十上百的不同的结构体。
有些结构体相当的大,上百的成员很常见。
如果对每一个结构体,具体的进行序列化反序列化,繁琐,易错,看起来也不优雅。
更难堪的是,大系统在运行中修改了数据结构,增加新的结构体,服务器和客户端都需要停机更新软件。
所以,需要这样两个函数来处理各种不同的结构体:
struct_to_JSON();
JSON_to_struct();
这两个函数可以放在应用工具库里。
这两个函数在编译期间是无法知道提交给它的结构体是啥。
所以,宏和STL就无能为力了。它们是编译期的泛型,而这里需要的是运行期的泛型。
这才两个函数,如果还需要:
to_XML;to_CSV;
还有数据库:
select,insert,update,delete,,,,
MAPPING to struct。。。。
这么多的泛型程序,都是运行时泛型。
有人很崇拜STL,说为啥不用STL?答曰,用不了,那是编译时泛型。
【 在 dormouseBHU 的大作中提到: 】
: C语言的宏就是最原始的泛型。
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*
泛型从源代码的角度让接口更通用
(反)序列化要解决的好像是另一个问题
看起来似乎是数据在传输过程中的存储问题
【 在 ylh1969 的大作中提到: 】
: 可以这么说。
: STL本质就是宏。
: 但是无论宏或STL,都解决不了一个问题。
: ...................
--
FROM 117.143.146.*
在访问数据库的过程中也需要。
比如,批量处理(数组访问),是提高数据库性能的重要手段,但是使用繁琐,在语句生成,绑定变量 ,填充数据,获取结果集等各个环节,反复的对结构成员点名,繁琐又易错。
如果想做一个通用的批量操作函数,这又是一个泛型问题,而且是运行时泛型。
【 在 easior 的大作中提到: 】
: 泛型从源代码的角度让接口更通用
: (反)序列化要解决的好像是另一个问题
: 看起来似乎是数据在传输过程中的存储问题
--
修改:ylh1969 FROM 221.218.61.*
FROM 221.218.61.*