可以这么说。
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.*