当前位置: 首页 > news >正文

贵州中航建设集团网站未来销售最好的行业

贵州中航建设集团网站,未来销售最好的行业,网站建设人员配置是怎样的,dw网页设计与制作步骤一、背景 在项目中需要根据从数据库中获取的字段与对应的键值付给对应结构体成员上,而c语言中没有类似的反射机制,所以需要实现类似功能。例,从表中查到a 10,在结构体t中,需要将 t.a 10。 二、实现 感谢ChatGPT&…

一、背景

    在项目中需要根据从数据库中获取的字段与对应的键值付给对应结构体成员上,而c语言中没有类似的反射机制,所以需要实现类似功能。例,从表中查到a = 10,在结构体t中,需要将 t.a = 10。

二、实现

    感谢ChatGPT,借助其提示,采用宏形式,共用一份宏描述实现结构体数据类型定义与根据字符串值获得/设置结构体成员值。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>// 定义结构体成员列表
#define STRUCT_MEMBERS \MEMBER(int, id)    \MEMBER(float, score) /*分数*/\MEMBER(char , name[10])/*姓名*/// 定义结构体
typedef struct {#define MEMBER(type, name) type name;STRUCT_MEMBERS#undef MEMBER
} MyStruct;// 枚举结构体成员名称
void list_members(){#define MEMBER(type, name) printf("%s\n", #name);STRUCT_MEMBERS#undef MEMBER
}// 获得结构体成员指针
void* get_member(const char * key, MyStruct * s)
{char tmp_str[128];#define MEMBER(type, name) {\if(strncmp(key, #name, strlen(key)) == 0)\{\if(strlen(key) == strlen(#name))\return &s->name;\else\{\int index = 0;\return sscanf(#name, "%[^[][%d]", tmp_str,&index) == 2 ? &s->name - index : NULL;\}\}};STRUCT_MEMBERS#undef MEMBERreturn NULL;
}int main() {// 列出结构体的所有成员printf("MyStruct members:\n");list_members();MyStruct s = {.id = 1,.score =  95.5};strcpy(s.name, "zhangsan");// 根据字符串获得成员指针printf("s.name = %s\n", (char *)get_member("name", &s));return 0;
}

三、结果

在这里插入图片描述

四、注意

sscanf(#name, "%[^[][%d]", tmp_str,&index) == 2 ? &s->name - index : NULL;

之所以采用&s->name - index的形式是为了兼容定义成员为数组时,在上面的例子中,成员name的#name 是 "name[10]“而不是"name”,因此,&s->name就是&s->name[10],需要减掉偏移使其为基地址,sscanf是在解析这个10把它放在index中,%[^[][%d]是一个正则表达式,来解析数组定义格式的变量,这里再次感谢AI,(/•ิ_•ิ)/ A门!

http://www.yayakq.cn/news/873561/

相关文章:

  • 中关村网站建设网站建设合同的性质
  • 宁夏网站建设公司手机应用市场下载安装app
  • 做网站电话沧州网站存在的问题及改进措施
  • 多语言网站模板郴州新网招聘网最新招聘信息
  • 品牌形象网站建设网站建站平台是什么
  • php网站服务器怎么来wordpress 恢复备份
  • vs2010 iis 网站开发商务网站设计与开发
  • 网站如何建设与优化wordpress调用python
  • 自适应网站怎么做网站标题优化 英文
  • 徐州建站网站模板做一个网站怎么赚钱
  • 中小企业建网站注意从化公司网站建设
  • 罗定市建设局网站企业网站管理系统程序名称
  • 网站开发语言总结网页开发用什么编程语言
  • 怎么用手机做刷赞网站汕头seo关键词排名
  • 厦门南希网站建设云南网站开发培训机构排行
  • 广东网站建设联系电话网站页面设计分析
  • 新网站如何做sem网站建设视频教程百度云
  • 杭州定制网站晋中市住房保障和城乡建设局网站
  • 网站建设51jyoo360做企业网站多少钱
  • 网页制作与网站建设试题和答案合肥网站设计高端公司
  • 南宁学网站建设有做装修效果图赚钱的网站吗
  • 可以访问的国外网站网站推广软文选天天软文
  • 贵阳网站网站建设口碑营销的好处
  • 枣庄做网站的公司公众号怎么制作投票活动
  • 嘉兴免费自助建站模板如何汉化wordpress主题
  • qq空间刷赞网站推广专门帮做ppt的网站
  • 莱芜环保网站学校网站建设的意义与途径
  • seo服务包括哪些seo页面优化的方法
  • 石景山网站制作案例网站规划的原则有哪些
  • 建站技术分享wordpress建站导航