
项目
派大星有个梦想
这个作者很懒,什么都没留下…
展开
-
浅谈动态多态实现原理
简介:如果一个类中声明有虚函数,大多数编译器就会为这个类创建一个虚函数表(virtual function table)简称虚表(vtab)。 虚表中存放了该类中所有虚函数的地址,虚表属于整个类,不属于某个具体的对象,该类所有对象共享虚表。当实例化该类对象时,会自动把该类虚表的首地址(简称为 虚指针 vptr)存在该对象中,当使用基类指针/基类引用 调用该虚函数时,大概的过程为:基类指针/基类引用 -》具体对象 -》虚指针 -》 虚函数...原创 2022-04-13 20:33:44 · 600 阅读 · 0 评论 -
俄罗斯方块开发板重构版
简介:之前写过一篇俄罗斯方块在ubuntu上用ANSI控制码运行的文章,因为没有可移植性,并且没有考虑信号处理函数的可重入性,当方块下落速度较快时,可能导致程序崩溃,在此基础上用frmaebuffer和多线程并发来对以前程序进行重构。代码:game.h#ifndef GAME_H__#define GAME_H__#define ROW 19#define LINE 14#define DIA 4#define BASE 7#define SPINSTA 4//方块函数,原创 2022-04-12 23:31:59 · 462 阅读 · 1 评论 -
C语言实现流媒体广播项目
一、简介一个简单的流媒体项目,基于客户端/服务器模型(C/S)开发,采用UDP组播技术,实现MP3格式音乐广播系统。服务器端采用多线程处理频道信息,实现媒体库(MP3)读取并进行流量控制(令牌桶),并通过UDP组播发送;客户端采用多进程,实现父进程接受来自网络的数据,通过进程间通信技术管道发送给子进程,子进程进行数据解码并输出到特定频道。项目简略图:-由于是一个广播系统,C/S之间的通讯采用无连接的udp组播,组播相对于广播更加灵活并且节省资源,故采用组播技术- 由于需要考虑到节目单频原创 2022-04-05 17:49:11 · 2454 阅读 · 0 评论 -
mplayer播放器管道重构版
主要实现及功能:1,播放,暂停及继续,上一页下一页,上一首下一首和退出2,歌曲结束根据播放模式来自动下一首3,可根据不同格式导入歌曲4,ANSI控制码实现简单的界面制作5, 通过管道来向mplayer播放器发送指令6, 在播歌曲滑动显示主要技术点:父进程捕捉SIGCHLD信号通过信号处理函数wait收尸来获得mplayer的退出状态,当mplayer正常结束时,信号处理函数创建一个分离的线程重新打开mplayer播放器根据播放模式来自动播放下一首,main线程通过temp原创 2022-03-04 14:42:47 · 875 阅读 · 7 评论 -
linux下c语言用mplayer实现简单的音乐播放器
主要功能及实现:1,播放,暂停及继续,上一页下一页,上一首下一首和退出2,以简单的并发来实现顺序播放等功能3,可根据不同格式导入歌曲4,ANSI控制码实现简单的界面制作缺点:1,未处理歌名太长覆盖界面的问题2,上一页,下一页只经过简单处理,不是很方便以下只对几个关键代码单独展示,完整源代码见文章末尾:一、带路径的歌曲名导入链表利用glob函数解析目录下的音乐名字并导入链表/* 歌曲路径和名字导入链表 */static LList_st *loading原创 2022-01-16 16:43:06 · 9728 阅读 · 5 评论 -
Linux下c语言实现有色界面俄罗斯方块
本文俄罗斯方块实现主要思路:把方块看做一个4x4的小数组在规定界面(看做一个大数组)内移动,用简单的信号控制并发,做到方块边下落边响应键盘的操作。本代码运用ANSI控制码来实现方块和界面的上色,提供从文件读取并更新历史最高分,暂停游戏,根据等级加快方块下落速度等功能,具体效果如下图所示:本文为博主第一次发表文章,不懂的地方可以留言,都会回复,喜欢的可以点赞收藏,代码不足的地方欢迎大家提出建议和改进方法 ,大家共同进步,以下为代码实现:函数声明:#ifndef GAME_H__#de.原创 2021-12-29 15:15:12 · 5220 阅读 · 9 评论