C语言之在结构体里面放很多函数指针

1 原因

看了open ssl代码里面很多在结构体里面放很多函数指针,然后再来调用,这样比较规范和统一

 

 

 

 

2 代码实现

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>typedef struct key_info 
{int (*init)(struct key_info *info);int (*set_name)(struct key_info *info, const char *name);int (*get_name)(struct key_info *info, char name[], int size);pthread_mutex_t lock;	char name[128];int (*fun)(struct key_info *info, int x, int y);
}KeyInfo;static int init(KeyInfo *info);
static int set_name(KeyInfo *info, const char *name);
static int get_name(KeyInfo *info, char name[], int size);
static int add(int x, int y);static int add(KeyInfo *info, int x, int y)
{return x + y;	
}
static int init(KeyInfo *info)
{assert(info != NULL);memset(info->name, 0, sizeof(info->name));info->init = init;info->set_name = set_name;info->get_

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机模拟考总结,高职单考单招计算机模拟一技术总结.doc

高职单考单招计算机模拟试卷一一、选择题(30*4分120分)1&#xff0e;从1946年第一台计算机诞生算起&#xff0c;计算机的发展至今经历了(? )4个年代。A.低档计算机、中档计算机、高档计算机、手提计算机B.微型计算机、小型计算机、中型计算机、大型计算机C.电子管计算机、晶体…

.NetCore中IdentityServer使用nginx-proxy的一次排错经历

前言最近在看 Duende.IdentityServer.Admin&#xff0c;本地使用IIS Express跑了一下源码&#xff0c;也看了一遍的代码&#xff0c;决定使用他们的模板创建一个Demo&#xff0c;部署在本地的Docker环境中&#xff0c;也算是踩一下坑吧。以下不会详细介绍项目的部署&#xff0c…

ENVI支持下利用高分辨率影像城市绿地信息提取方案

城市绿地在改善城市生态环境和人居环境起着积极的作用,城市绿地含量逐渐成为衡量城市生活质量的一个重要指标。此外,城市绿地的空间分布格局与其生态效应有着密切的关系。因此,必须客观、准确地掌握城市绿地信息。传统的城市绿化调查主要通过基层单位上报统计数据和实地抽样…

Job make U funck Uself!!!

今天武汉大雨&#xff0c;对于这个鬼地方已经习以为常&#xff0c;在实验室又一次看到有人前来应聘。 突然意识到当今学无大用&#xff01;&#xff08;一个英语专业毕业的本科生应聘秘书&#xff08;打杂的跑腿的&#xff09;&#xff09; 更让我惊讶的是这位竟然说不拿工资先…

nmap脚本使用总结

原文链接&#xff1a;http://drops.wooyun.org/tips/2188 0x00 前言&#xff1a; nmap的基本介绍和基本使用方法&#xff0c;在乌云知识库中已经有人提交过&#xff0c;讲的比较详细&#xff0c;在此文中就不再讲述。 具体链接&#xff1a;http://drops.wooyun.org/tips/2002 本…

python爬虫实例手机_Python爬虫实现爬取京东手机页面的图片(实例代码)

实例如下所示&#xff1a; __author__ Fred Zhao import requests from bs4 import BeautifulSoup import os from urllib.request import urlretrieve class Picture(): def __init__(self): self.headers {User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) Ap…

linux平台安装React Native遇到的坑

3年前我在windows平台安装过React Native,我一直都记忆犹新,那个时候facebook刚推出支持安卓,然后花了一天的时间在自己的window电脑上配置好了,还是很兴奋的,安装博客地址如下 Android之Windows下搭建React Native Android开发环境&#xff08;差不多搞了一天&#xff09; 现…

身份管理软件公司Okta计划IPO,目标融资1亿美元

Okta是一家专门提供身份管理和单点登陆&#xff08;SSO&#xff09;软件的公司。今日公司提交了一份S-1表格正式启动了IPO程序。根据文件内容显示&#xff0c;Okta计划在首次公开募股中融资1亿美元。 公司表示&#xff0c;Okta将在纳斯达克上市&#xff0c;股票代码为OKTA。 即…

jmeter对乱码如何处理_JMeter读取 Excel 表中用例数据实现接口压测

传统的接口测试&#xff0c;都是在接口中手动输入不同用例准备的多种场景参数数据&#xff0c;一遍一遍的输入来执行多个不同的用例&#xff0c;但是现在利用excel表格准备各种类型的数据&#xff0c;使用Jmeter中Jmeter CSV Data Set Config参数化实现可设置的、一次性的读取e…

C# 利用.NET 升级助手将.NET Framework项目升级为.NET 6

概述.NET6 正式版本已经发布有一阵子了&#xff0c;今天我就体验一下如何将.NET Framework的项目升级为.NET 6.升级条件&#xff1a;Windows 操作系统.NET 6 SDKVisual Studio 2022 17.0 或更高版本环境准备①首先是VS2022下载&#xff0c;直接上微软官方网站&#xff0c;下载地…

城市遥感动态监测管理系统

1.系统概述 随着全国各城市数字化进程的发展&#xff0c;高分辨率遥感影像和数字航空影像为“数字城市”的建设提供了丰富的数据源。近年来&#xff0c;遥感影像的空间分辨率和光谱分辨率的明显提高&#xff0c;使得高分辨率遥感影像和数字航空影像的应用得到了极大的延伸。在城…

3月第4周全球域名商TOP15:万网第四 涨幅居亚

IDC评述网&#xff08;idcps.com&#xff09;04月03日报道&#xff1a;据WebHosting.info公布的最新数据显示&#xff0c;在3月第4周&#xff0c;全球域名商域名总量十五强排行榜中&#xff0c;美国占10个席位&#xff0c;成为最大赢家。其次是中国&#xff0c;有3家域名商上榜…

node.js之npm

1 npm介绍 npm是NodeJS一起安装的包管理工具 2 常用命令 1) 安装npm npm install 2) 查看npm版本 npm -v 比如我的ubuntu 6.4.1 3 ) 升级npm npm install npm -g 4) npm安装模块,比如安装react-native 0.56版本 npm install react-native0.56.0 5) npm的全局安装…

python代码加密解密_在python中加密 – 在Javascript中解密

您的Python代码和CryptoJS代码存在许多问题&#xff1a; >您使用随机IV加密Python中的一些明文.如果要检索该明文,则需要在解密期间使用相同的IV.没有IV,明文就无法恢复.通常,IV只是前置于密文,因为它不必是秘密的.因此,您需要在解密期间读取IV,而不是生成新的IV. >您在C…

ftp服务器客户端修改密码,如何在客户端修改FTP密码

一般情况下&#xff0c;FTP空间申请后&#xff0c;用户自己都不清楚如何修改密码&#xff0c;下面给出方法如下&#xff1a;★首先&#xff0c;要确认FTP服务器端允许用户修改秘密。然后运行FlashFXP&#xff0c;在命令栏输入命令“site pswd 旧密码 新密码”如果提示信息“230…

Task.Factory.StartNew 和 Task.Run 到底有什么区别?

前言Task.Factory.StartNew 和 Task.Run 都可以创建 Task:Task.Factory.StartNew(() > { Console.WriteLine("Task.Factory.StartNew"); });Task.Run(() > { Console.WriteLine("Task.Run"); });那它们之间有什么区别呢&#xff1f;实现代码查看这 2…

mvc 职能划分_MVC架构的职责划分原则

来源&#xff1a;https://www.awaimai.com/873.html 歪麦博客最近负责一个项目&#xff0c;用了 Yii Framework 的 MVC 框架&#xff0c;刚开始自以为结构很稳健。但是随着对业务逻辑理解的深入&#xff0c;才开始意识到问题的严重。我错误地理解了 MVC 中的 Controller&…

Matlab clear, clc 和close函数

1、clear 作用:删除工作空间中的项目,释放系统内存 语法:

Highcharts数据表示(3)

Highcharts数据表示(3) 採用对象数组的形式&#xff0c;能够明白节点上每一个项目的值。可是当节点较多时&#xff0c;会造成大量的冗余代码。假设不写配置项名称&#xff0c;对象数组就能够简化二维数组。形式例如以下&#xff1a;data:[[Number|String , Number , Color , Nu…

Git撤销文件的修改(git checkout -- file)(git reset HEAD file)(git reset HEAD~)

1 撤销没有add到暂存储区文件 git checkout -- file 如果我们把文件rm了,git statu肯定会显示出来,我们怎么还原这个文件呢?还是用上面的命令 2 撤销到add到暂存储区文件 分2步 git reset HEAD file 上面命令把暂存区的拉到了工作区,但是这个时候文件依然修改了,我们还…