我有几个C语言结构体,我想编写以下三个函数:
第一个应该返回在结构体中定义的字段列表。第二个和第三个应该通过字段名获取和设置相应的字段。
我正在编写结构体。如果需要,我愿意使用任何宏魔法。如果每个结构体有三个函数三元组,那也可以。但是通用结构更好。函数指针也可以......
基本上,我想要一些关于结构体的基本反射。
get_field_list(...)
get_value_by_name(...)
set_value_by_name(...)
第一个应该返回在结构体中定义的字段列表。第二个和第三个应该通过字段名获取和设置相应的字段。
我正在编写结构体。如果需要,我愿意使用任何宏魔法。如果每个结构体有三个函数三元组,那也可以。但是通用结构更好。函数指针也可以......
基本上,我想要一些关于结构体的基本反射。
Relevent: https://natecraun.net/articles/struct-iteration-through-abuse-of-the-c-preprocessor.html
动机
我正在尝试为使用C语言编写的本地应用程序构建数据访问层(DAL)。我使用SQLite作为数据库。我需要存储各种结构,并能够插入\更新\获取(按键选择)\搜索(按查询选择),并且还需要创建\删除所需的表。
基本上,我想要像Hibernate一样的东西来处理C语言...
目前为止,我最好的想法是使用宏、代码生成工具或脚本来创建我的结构以及元数据,我可以使用它们来动态构建所有我的SQL命令。并且有一个小的“通用”模块来实现我需要的所有基本程序...
欢迎提出解决我的实际问题的不同或更好的想法!
offsetof
来访问相对于结构指针的字段,以及使用 x-macros 和#
字段名称字符串化来生成结构声明和字段数组描述符。虽然不是非常美观,但如果能节省大量手动输入的工作量,那么它就值得一试。 - doynax