[common c] 嵌套结构体中内层结构体的成员可以和外层结构体成员同名

news/2024/4/19 6:52:39/

前言:

glib 和 gstreamer 体系依赖结构体来实现,其中涉及到虚函数,我们可以发现其中某些结构体成员的名字和其父结构体的成员是同名的,而这是允许的。

代码:

#include <stdio.h>typedef void (*func1)(int);
typedef void (*func2)(char);struct A{func1 pf;    //叫pf 的成员
};struct B{struct A parent;func2 pf;    //同样有一个叫pf的成员,其实这里即便是同样的类型依旧没问题//func1 pf;  //不仅仅是同名称, 即便同类型同名称都可以
};void func1Impl(int i){printf("func1Impl");
}
void func2Impl(char c){printf("func2Impl");
}int main()
{struct B* pb = new B();pb->parent.pf = &func1Impl;pb->pf = &func2Impl;pb->pf(1);pb->parent.pf('c');
}


http://www.ppmy.cn/news/986389.html

相关文章

有哪些虚拟机好用?并且对电脑没有伤害

在当今数字化时代&#xff0c;虚拟化技术越来越受到人们的关注和使用。虚拟机作为一种强大的工具&#xff0c;可以在一台计算机上模拟多个独立的操作系统环境&#xff0c;为用户提供了灵活性和便利性。然而&#xff0c;有人担心使用虚拟机可能会对电脑造成损害&#xff0c;尤其…

Goby 漏洞发布|Metabase JDBC 远程代码执行漏洞(CVE-2023-38646)

漏洞名称&#xff1a;Metabase JDBC 远程代码执行漏洞&#xff08;CVE-2023-38646&#xff09; English Name&#xff1a;Metabase JDBC Remote Code Execution Vulnerability (CVE-2023-38646) CVSS core: 9.8 影响资产数&#xff1a;66604 漏洞描述&#xff1a; Metabas…

C#时间轴曲线图形编辑器开发2-核心功能实现

目录 三、关键帧编辑 1、新建Winform工程 &#xff08;1&#xff09;界面布局 &#xff08;2&#xff09;全局变量 2、关键帧添加和删除 &#xff08;1&#xff09;鼠标在曲线上识别 &#xff08;2&#xff09;键盘按键按下捕捉 &#xff08;3&#xff09;关键帧添加、删…

我的MacBook Pro:维护心得与实用技巧

文章目录 我的MacBook Pro&#xff1a;维护心得与实用技巧工作电脑概况&#xff1a;MacBook Pro 2019款 16 寸日常维护措施个人维护技巧其他建议 我的MacBook Pro&#xff1a;维护心得与实用技巧 无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器。一台好电脑除…

机器人状态估计:robot_localization 功能包简介与安装

机器人状态估计&#xff1a;robot_localization 功能包简介与参数配置 前言功能包简介安装使用ubuntu软件源安装使用源码安装 前言 移动机器人的状态估计需要用到很多传感器&#xff0c;因为对单一的传感器来讲&#xff0c;都存在各自的优缺点&#xff0c;所以需要一种多传感器…

pyspark 笔记 cast 转换列的类型

1 不借助 pyspark.sql.types from pyspark.sql.functions import coldata [("Alice", "28"), ("Bob", "22"), ("Charlie", "30")] columns ["name", "age_str"] df spark.createDataFram…

从Arweave开始:4EVERLAND存储签入挑战开始

嗨&#xff0c;4evers&#xff0c; 今天&#xff0c;我们热烈欢迎您参加 Galxe 上的 4EVERLAND “Arweave 入门”活动。这是一项长期的重头活动&#xff0c;所有参与的用户都有机会获得相应的奖励。 Arweave 是一种革命性的去中心化存储协议&#xff0c;为寻求安全可靠的有价…

find_in_set在oracle下的解决方案

比如一张表&#xff1a; artile (id,type,content); # type:1表示文艺类&#xff0c;2表示小说类&#xff0c;3表示传记&#xff0c;4表示传说&#xff0c;等等5,6,7,8表数据&#xff1a; idtypecontent13,1dfasdfasdf21,3,6,8dfasdf36,8,9add 现在要找出3传记类的artile记录…

《零基础入门学习Python》第070讲:GUI的终极选择:Tkinter7

上节课我们介绍了Text组件的Indexs 索引和 Marks 标记&#xff0c;它们主要是用于定位&#xff0c;Marks 可以看做是特殊的 Indexs&#xff0c;但是它们又不是完全相同的&#xff0c;比如在默认情况下&#xff0c;你在Marks指定的位置中插入数据&#xff0c;Marks 的位置会自动…

B077-项目实战--领养订单 服务订单 订单查看

目录 领养订单需求分析准备结算页后端AdoptOrderControllerAdoptOrderServiceImpl 服务订单业务分析前端后端ProductOrderControllerProductOrderServiceImpl 订单查看业务分析领养订单查看后端AdoptOrderControllerAdoptOrderServiceImplAdoptOrderMapper 前端 支付 领养订单 …

ElasticSearch基本使用--ElasticSearch文章一

文章目录 官网学习必要性elasticsearch/kibana安装版本数据结构说明7.x版本说明ElasticSearch kibana工具测试后续我们会一起分析 官网 https://www.elastic.co/cn/ 学习必要性 1、在当前软件行业中&#xff0c;搜索是一个软件系统或平台的基本功能&#xff0c; 学习Elastic…

flask中的session介绍

flask中的session介绍 在Flask中&#xff0c;session是一个用于存储特定用户会话数据的字典对象。它在不同请求之间保存数据。它通过在客户端设置一个签名的cookie&#xff0c;将所有的会话数据存储在客户端。以下是如何在Flask应用中使用session的基本步骤&#xff1a; 首先…

使用Feign出现空指针异常

说明&#xff1a;本文记录一次偶然出现的空指针异常&#xff0c;在微服务架构中&#xff0c;一个服务在调用另一个服务时&#xff0c;出现了空指针异常。 业务描述&#xff1a;在做订单超时功能时&#xff0c;大家都知道&#xff0c;可以使用RabbitMQ延迟队列&#xff0c;下单…

Higress非K8S安装

Higress非K8S安装 文章目录 Higress非K8S安装环境安装安装higress进入到higress 的目录下修改下nacos的地址启动Higress登录higress管理页面 Higress 是基于阿里内部构建的下一代云原生网关&#xff0c;官网介绍&#xff1a;https://higress.io/zh-cn/docs/overview/what-is-hi…

IO进、线程——守护进程

守护进程 守护进程的创建过程 1、创建子进程&#xff0c;并退出父进程&#xff1a; 守护进程的创建通常通过fork()系统调用实现。fork()会创建一个新的子进程&#xff0c;该子进程是调用进程&#xff08;父进程&#xff09;的副本。父进程会继续执行fork()之后的代码&#x…

低代码开发平台源码:可视化敏捷开发工具,拖拽式自定义表单界面

低代码开发平台源码 低代码管理系统源码 无需代码或通过少量代码就可以快速生成应用程序的开发平台。 本套低代码管理后台可以支持多种企业应用场景&#xff0c;包括但不限于CRM、ERP、OA、BI、IoT、大数据等。无论是传统企业还是新兴企业&#xff0c;都可以使用管理后台快速构…

比较版本号(力扣)思维 JAVA

给你两个版本号 version1 和 version2 &#xff0c;请你比较它们。 版本号由一个或多个修订号组成&#xff0c;各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成&#xff0c;可能包含 前导零。每个版本号至少包含一个字符。修订号从左到右编号&#xff0c;下标从 0 开始…

自动驾驶之轨迹规划8——Apollo参考线和轨迹

1. abstract 本文主要讲解routing和planning模块中的reference line&#xff0c;我之前一直搞不明白这个reference line是如何生成的&#xff0c;有什么作用&#xff0c;和routing以及planning的关系。现在有了一些心得打算梳理一下&#xff1a; 决策规划模块负责生成车辆的行…

WPF实战学习笔记20-设置首页启动页

文章目录 设置首页启动页增加配置接口添加接口文件&#xff1a;实现接口 配置启动选项 设置首页启动页 增加配置接口 添加接口文件&#xff1a; Mytodo.Common/IConfigureInterface.cs using System; using System.Collections.Generic; using System.Linq; using System.T…

VUE声音-报警-实现方式

1.先准备一个mp3文件包&#xff1a;&#xff08;这个24小时生效如果失效可留言&#xff0c;看到就会增加时效&#xff09; 获取mp3地址&#xff1a; https://www.aliyundrive.com/t/uQ8zqjn9JKSfm7QlGOSr2.代码内容 进入页面就会自动 播放mp3的内容信息了。 <template>…