C/C++
文章平均质量分 69
Liigo
当我沉默着的时候,我觉得充实;我将开口,同时感到空虚……
相对于篮球,我更喜欢足球;相对于象棋,我更喜欢围棋;相对于C,我更喜欢Rust;……
庄晓立(Liigo),男,80后,山东省梁山县人,2002年毕业于山东理工大学,十多年来长期从事软件技术研究和基础产品研发。
电子邮件: liigo@@qq..com;新浪微博: Liigo;G+: +Liigo Zhuang。欢迎来人来函以及来而不往非礼也之洽谈。
展开
-
即将发布的C库STC v4.3已支持块定义风格的协程
STC新版将支持Block-style风格的协程定义。相比旧版,新版写法浑然天成,风格上更贴近C语言,摒弃了原来人为刻意构造的 cco_begin/cco_end,把返回值也从cco_end参数里拿出来,用纯粹的C语法return表达协程返回值,而且还额外支持在协程结束之前执行任意代码,这也是相对旧版的重要改进。原创 2023-06-20 19:49:46 · 706 阅读 · 0 评论 -
评Stroustrup评NSA说C++不是内存安全语言
Stroustrup这家伙快成杠精了,对抗全世界,估计过几年他自己先崩溃。他嘴里的静态检查工具是一个混沌体,游离于编译系统之外,鱼龙混杂,质量好点的还收费。他们对现代C++语言的改进仅限于增加新功能,并不填历史坑,该坑人的地方还是坑人,除非旧代码用新语言重写——那是人干的事吗。谷歌微软火狐等多个统计源数据显示内存安全占所有漏洞的三分之二,他过来给你扯“安全有很多种不止内存安全”,咱能不能先抓重点不要扯蛋。反观Rust对内存安全的提升是让人看得见的,无论是理论还是实践。原创 2023-03-06 18:12:53 · 477 阅读 · 1 评论 -
使用gdb远程调试开发板内程序
使用gdb远程调试开发板内程序背景,开发主机是x86-64平台的Linux系统,开发板是ARM平台的Linux系统。1. 安装gdb-multiarch作为gdb客户端apt install gdb-multiarch2. 编译可在开发板内运行的gdbserver作为gdb服务端下载gdbserver v7.12源代码,并使用交叉编译工具链编译:cd gdb-7.12/gdb/gdbserver./configure --host=arm-linux --target=arm-linuxma原创 2021-10-15 18:30:57 · 1729 阅读 · 2 评论 -
用 VC6 编译 log4cplus + stlport
log4cplus的较新版本(1.1, 1.04)不直接支持使用VC6编译(仅支持VC10,VC8),所以我们只能用2009年发布的较旧的1.03版本,这个版本自带了VC6的工程文件(*.dsw),可直接用VC6编译。但如果把 log4cplus 和 stlport 一起编译的话,会遇到大概20个编译错误。这些错误多数算是 stlport 导致的,但出于方便起见我们通过修改 log4cplus 的原创 2012-06-09 16:32:28 · 3423 阅读 · 0 评论 -
在XP系统下用VC6调试IIS 5.1 ISAPI扩展DLL/筛选器
我(Liigo)真的是败给它了,折腾了一晚上又一白天,尝试了无数遍,直到今晚早些时候才算有些眉目了。经历惨痛的过程,终于获得一些经验总结。其实按照我后面提供的两个链接,仔细设置和操作,完全是可以达成目的的,只是有些东西太隐晦,很不直观,以致被我忽略。在这里我必须总结曾经让我(Liigo)伤心失望无数遍的几处要点:1、VC Start debug -> Attach to Process 时,如原创 2012-06-03 23:04:00 · 2998 阅读 · 0 评论 -
基本的HTML文本解析器的设计和实现(C/C++源码),图文并茂
作者:庄晓立 (liigo)日期:2011-1-19原创链接:http://blog.csdn.net/liigo/archive/2011/01/19/6153829.aspx转载请保持本文完整性,并注明出处:http://blog.csdn.net/liigo关键字:HTML,解析器(Parser),节点(Node),标签(Tag) 这是进入2011年以来,本人(lii原创 2011-01-19 23:28:00 · 37181 阅读 · 69 评论 -
试用EF开发WEB应用程序(6): 解析Query String中的各参数值
题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。 作者:liigo。转载请务必注明出处:http://blog.csdn.net/原创 2008-04-07 23:54:00 · 3131 阅读 · 0 评论 -
“基于关键字匹配的文本过滤系统”配置文件的设计和实现(C/C++源码)
本文原始链接:http://blog.csdn.net/liigo/archive/2009/10/29/4744700.aspx作者:liigo, 2009/10/29转载请注明出处:http://blog.csdn.net/liigo 假设有一个基于关键字匹配的文本过滤系统,或类似的系统,需要一个配置文件,用于设定欲过滤的关键字列表。该怎么设计这样一个配置文件呢?又该如何编原创 2009-10-29 19:55:00 · 5424 阅读 · 1 评论 -
用C语言实现SGF格式围棋棋谱解析器
这是本人(liigo)独立实现的SGF格式围棋棋谱文件解析器,本文介绍其实现细节。网络上肯定可以找到完善的开源的SGF解析器,这是毋庸置疑的,我不直接使用它们,也不参考它们的实现代码,而是自己独立编码实现,是有原因的,因为我想自己重复发明轮子,并且认为这样更有助于提高我的编码能力。(关于我的“一定要学会重复发明轮子”的不成熟的论调,今后我将会专门撰文表述。) 我(liigo)开发的这个SGF原创 2009-09-06 23:56:00 · 12512 阅读 · 3 评论 -
试用EF开发WEB应用程序(2): Hi, FastCGI (附图)
题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/l原创 2008-04-01 22:12:00 · 2624 阅读 · 3 评论 -
纯手绘的MyGUI创建Widget流程图
在上一篇《纯手绘的MyGUI类图、渲染流程图》文中,我大概走通了MyGUI的渲染流程,知道所有渲染动作都发生在BaseManager.drawOneFrame()里面,起点是ISubWidget,它生成顶点数据到VertexBuffer,经过LayerManager旗下的层层转发,最终喂入IDirect3DDevice9.DrawPrimitive()。可是MyGUI系统内的另一个非常重要的对象W原创 2011-12-21 01:23:35 · 8668 阅读 · 6 评论 -
纯手绘的MyGUI类图、渲染流程图
MyGUI (version 3.2 preview) class diagrams and render flow charts, sketched by liigo. 2011-12-16.init:IRenderTarget, RenderManager, Vertex, IVertexBuf, ITexture, DirectXRenderManange原创 2011-12-16 19:26:42 · 6159 阅读 · 4 评论 -
实现CEGUI中文汉字输入法光标跟随(C/C++源码)
本文主要解决CEGUI中文汉字输入法“光标跟随”功能中最核心的地方,获取CEGUI编辑框(Editbox, MultiLineEditbox)中当前光标(Caret)的屏幕坐标。我(liigo)的这个解决方案是在研究和修改CEGUI源代码之后得到的。原创 2011-07-20 22:58:13 · 7568 阅读 · 7 评论 -
在静态库LIB/OBJ文件中搜索定位病毒特征码所属函数,C/C++源码
本文目标:在指定的某个LIB或OBJ文件中,搜索定位某一段可执行代码(X86指令集合),最终确定其所属函数。基本思路:解析LIB文件二进制格式(关于LIB/OBJ基本结构,可参见本人之前的一篇博文),遍历LIB文件中的所有OBJ,遍历每一个OBJ中的所有节(Section),在节(Section)的数据块(RawData)中搜索特征码,如果搜到则打印出此节(Section)中定义的所有符号(Symbol),根据其中的函数符号及相关偏移即可判断特征码所属函数。原创 2010-07-12 01:20:00 · 7294 阅读 · 8 评论 -
DXUTBlendColor::Blend()实现DirectX3D窗口GUI动态组件的分析研究(多图)
作者:liigo时间:2010/4/26首发地址:http://blog.csdn.net/liigo/archive/2010/04/26/5530942.aspx转载请注明出处:http://blog.csdn.net/liigo 前传 前传,故事发生在原作之前,而创作于原作之后。我借此宝地,非常抱歉地声明,此文分析方法有误!错误源于我对 fElapsedTime原创 2010-04-26 18:07:00 · 3127 阅读 · 4 评论 -
由C/C++的开源项目和开源协议说开去——和CSDN博客专家王绍全的讨论记录
由C/C++的开源项目和开源协议说开去 ——和CSDN博客专家王绍全的讨论记录 以下,是 2009/11/30 在 CSDN博客专家群,我(liigo)与CSDN博客专家王绍全(Eric)的讨论记录,发表之前已征得他的同意。内容上,主要表达了我私下里对于C/C++开源项目的抱怨,和由于版权的关系不能有效地将其应用于工作中的烦恼。 王绍全[wwws原创 2009-11-30 18:14:00 · 4456 阅读 · 3 评论 -
跟踪调试易语言静态编译支持库的方法
作者:庄晓立(Liigo)日期:2012-6-19原创链接:http://blog.csdn.net/liigo/article/details/7677507转载请注明出处:http://blog.csdn.net/liigo/易语言支持库的动态库(*.fne)和静态库(*_static.lib)通常是同一套源代码,往往动态库调试成功了,静态库也应该没有什么问题。但不原创 2012-06-19 20:26:58 · 12402 阅读 · 0 评论 -
MyGUI 3.2 VC2010项目配置 HelloWorld
1、创建Win32 Project。 Windows application (Empty project)2、配置include路径:E:\liigo\mygui\MyGUI_3.2.0\MyGUIEngine\includeE:\liigo\mygui\MyGUI_3.2.0\Platforms\DirectX\DirectXPlatform\includeE:\原创 2012-07-30 11:14:16 · 4459 阅读 · 6 评论 -
理解 MyGUI 界面库的 IUnlinkWidget
作者:庄晓立(Liigo),2012-8-10。原创链接:http://blog.csdn.net/liigo/article/details/7851835转载请注明出处:http://blog.csdn.net/liigoMyGUI::IUnlinkWidget是一个纯虚类,以Java的语言来说它是一个interface,它有唯一的纯虚函数 void _unlinkWidg原创 2012-08-10 16:58:35 · 4017 阅读 · 1 评论 -
无锁环形缓冲区队列 kfifo
kfifo的移植两个月前,我花了两天时间,查找Linux内核里kfifo的相关资料,将其从内核层移植到应用层,并成功应用于多线程CAN总线采集程序(一个线程接收/一个线程输出)。kfifo.c是从Linux 5.3 stable内核代码里复制出来的,路径是lib/kfifo,对应的kfifo.h路径是include/linux/kfifo.h。由于kfifo是内核里的代码,应用层无法直接使用,我...原创 2019-09-18 18:56:46 · 4288 阅读 · 0 评论 -
日常随手记,记录一些琐碎的技术细节
本文用作日常随手记,平时遇到一些琐碎的技术细节就随便扔进来备查。必要时也可整理成独立博文发表。通过 _CrtSetBreakAlloc 定位内存泄漏点现象:Visual Studio 调试运行程序结束后在输出栏提示有内存泄漏,内容如下Detected memory leaks!Dumping objects ->{5481} normal block at 0x01371820,...原创 2018-11-29 11:11:36 · 1417 阅读 · 0 评论 -
UCRT: VC 2015 Universal CRT, by Microsoft
经Liigo本人测试,在XP SP3系统内,VC2015编译的EXE/DLL除了依赖以上目录内的(几乎)所有dll以外,还额外依赖`vcruntime140.dll`。前面提到的这些dll,共计42个,统统放到EXE/DLL所在目录,可确保所有依赖项都不欠缺。原创 2016-11-14 17:18:57 · 8146 阅读 · 3 评论 -
QCon2016演讲《Rust语言的核心竞争力》总结和补充
应 QCon北京2016|全球软件开发大会 主编臧秀涛邀请,我(Liigo)于2016年4月23日在大会上做主题演讲《Rust编程语言的核心优势和核心竞争力》(PDF演讲稿)。由于是初次登台,现场表现不佳,个人不是很满意。故做本文对此次演讲进行总结和补充。核心三要素:系统编程,零运行时,内存安全我把Rust编程语言的核心优势和核心竞争力概括为三个要素:系统编程,零运行时,内存安全。在强调底层控制的系原创 2016-04-27 00:15:29 · 15560 阅读 · 5 评论 -
修改Go语言(golang)编译器源代码让它支持UTF-8 BOM
Go语言(golang)第一个正式版Go1发布了,但是这个新兴的编程语言还是非常不完善。这不,我(Liigo)又发现它的编译器竟然不支持编译带BOM的UTF-8编码的.go源文件。这就很奇怪,该语言明明要求源代码文件.go必须是UTF-8编码,但有不允许带UTF-8 BOM。要知道,这个世界上带BOM的文件太多了,很多文本编辑器/代码编辑器/IDE支持生成、甚至默认生成带有BOM的UTF-8文件。原创 2012-04-16 22:34:23 · 34878 阅读 · 33 评论 -
HTML文本解析器C模块 for LUA
总结用C语言开发LUA脚本语言C模块(module)的部分经验和感受原创 2013-09-12 23:21:04 · 6449 阅读 · 0 评论 -
基于libuv的最精简Web服务器:tinyweb v1 v2 v3 (C语言源码)
一年之前,我发表过一篇博客《》原创 2014-08-07 21:07:27 · 12901 阅读 · 6 评论 -
tinyweb: C语言 + libuv 开发的最精简的WebServer (附源码)
libuv 是一个高性能事件驱动网络库,是 Node.js 的底层实现。经过我(Liigo)在实际项目中的深度应用,发现 libuv 在代码质量、运行效率、网络吞吐量、稳定性、跨平台等多方面都相当优秀,是一款不可多得的开源产品,可以说从质量到名气都不差。libuv 的缺点是易用性太差,文档严重不足,入手门槛较高。在这些方面它跟陈硕的muduo 库差距很大,muduo的易用性太棒了,还有一本原创 2013-06-22 09:44:52 · 22420 阅读 · 9 评论 -
移植 libuv 到 Visual C++ 6.0 并支持在 Windows XP 系统下编译
我从一年前(大概2013年6,7月份)开始在业余时间做这项移植工作,走走停停,陆续用了一两个月的时间,才基本完成。这期间做了详细的移植记录,现在发布出来,希望对某些人有用。就在昨天(2014年7月12日),我又把移植的代码同步到最新的libuv并发布到Github上;但是之前的移植记录没有变更,或许在一定程度上已经部分失效了。原创 2014-07-13 14:39:26 · 7068 阅读 · 1 评论 -
《代码大全》里核心的部分checklist整理
作者:蛙蛙王子。为了更好的评估代码写的哪里有问题,我把《代码大全》里核心的部分checklist整理出来了,大家可以大概过一遍,不一定每写完一个程序都要一条一条的去检查,但心里应该有这么一张检查表,在写代码和review代码时自然而然的想起来。转载自 http://www.cnblogs.com/onlytiancai/archive/2010/05/30/1747556.html设计转载 2013-08-16 10:57:22 · 5585 阅读 · 0 评论 -
看似简单的 fgets() 其实很不简单(坑爹的C语言)
很平常的一个C语言练习题:“使用 fgets() 读取一个ASCII编码的文本文件内容,向控制台逐行输出其中所有文本。”你能很轻松的做对这个题目吗?SHOW一段代码来看看。你写的代码是100%正确的吗?会有重大缺陷吗?重点思考以下几点:- 在文件内容为空(长度为零)时是否输出了一堆乱码?- 在文件以换行结束时是否重复输出了最后一行文本?- 在文件末尾没有换行原创 2013-08-10 18:05:53 · 9459 阅读 · 4 评论 -
Linux 软件看门狗 watchdog
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动一个1分钟的定时器(系统默认时间),此后,用户空间程序需原创 2013-07-02 18:18:41 · 60320 阅读 · 3 评论 -
一门编程语言的诞生总是有理由的
Kevin Kelleher suggested an interesting way to compare programming languages: to describe each in terms of the problem it fixes. The surprising thing is how many, and how well, languages can be descri转载 2012-12-26 09:49:21 · 3787 阅读 · 2 评论 -
说说编译链接系统中的符号(symbol)、重定位(relocation)、字串表(string-table)和节(section)
作者:liigo日期:2009/11链接:http://blog.csdn.net/liigo/archive/2009/11/23/4858535.aspx转载请注明出处:http://blog.csdn.net/liigo 编译(compile)和链接(link),是计算机编程语言的通用处理系统。编译,是把程序源代码转换为目标文件;链接,是把目标文件转换为可执行文原创 2009-11-23 19:27:00 · 12257 阅读 · 9 评论 -
在魅族M8手机(WinCE6.0系统)上编程设置文件关联(C/C++源码)
在魅族M8手机(WinCE6.0系统)上设置文件关联,需生成以下注册表项: HKEY_CLASSES_ROOT/.xxx defaultvalue: xxxfileHKEY_CLASSES_ROOT/FileAssociate/xxxfile/shell defaultvalue: HKEY_CLASSES_ROOT/FileAssociate/xxxfi原创 2009-11-22 15:02:00 · 3285 阅读 · 3 评论 -
为魅族M8手机开发的围棋打谱软件(M8WeiqiPu)发布0.8版,多图
《M8围棋谱》v0.8,是我(liigo)为魅族M8手机开发的围棋打谱软件,还在开发过程中,目前功能不全,但基本功能可用。基本功能:打开并解析SGF棋谱,单步向前向后,落子音效,自动提子,显示棋局信息和解说,支持自定义皮肤。 作者:liigo,http://blog.csdn.net/liigo此软件是 Google Code 上的开源软件,项目主页为:http://code.go原创 2009-10-19 20:47:00 · 3762 阅读 · 5 评论 -
易语言写支持库也能玩出“花”儿来(易写易库(EXEK)进展5)
在易语言中使用“易写易库(EXEK)”开发易语言支持库,不仅功能上没有限制,而且还能玩出“花”儿来,甚至是别人玩不出的“花”儿。 一:不要命令分类通常来说,支持库中的命令都被分为若干个类别。如易语言核心库中的命令被分为“流程控制”“算术运算”“逻辑比较”“位运算”“变量操作”“数组操作”等等。对核心库来说这当然是必须的,毕竟里面有数百条命令,只有清晰的分类,才更便于用户查找和记忆。原创 2008-08-31 20:36:00 · 5693 阅读 · 9 评论 -
易写易库(EXEK)进展情况(3)(2008.8.26)
经过最近几天的努力,已经初步完成了《易写易库(EXEK)开发手册》v0.1,其中涉及了除开发窗口组件数据类型之外的其它几乎所有内容,当然有些地方还不很详细。目前的《易写易库(EXEK)开发手册》主要内容有:对EXEK的简介;介绍开发第一个支持库的详细步骤;分别介绍如何定义支持库、附加功能、常量、命令(及其参数、实现函数)、枚举类型(及其常量成员)、普通数据类型(及其成员、方法(含参数、实现函数))原创 2008-08-26 22:12:00 · 2724 阅读 · 8 评论 -
“易写易库(EXEK)”项目启动,用易语言开发易语言支持库
“易写易库”(EXEK,E Xie E Ku)项目已经启动,用易语言开发易语言支持库。我(liigo)准备用一个月左右的业余时间,完成本项目的一期工程。 用易语言开发易语言支持库,已经不是一个梦想,早已成为现实。之前已经有不少重量级人物进行过开创性研究,如金眼睛、海洋、云外归鸟等。而我的工作,也正是这些研究成果之上的拓展。在巨人的肩膀上,我站的很高,看的很远。我觉得应该可以做的更好。原创 2008-07-23 20:19:00 · 7215 阅读 · 13 评论 -
编程语言EF速度测试(7):recursive
这是一个专门的编程语言/编译器速度测试/对比网站(http://shootout.alioth.debian.org/)给出的题目,以下是EF源代码: //recursivepublic class 启动类 { public static main() { int time = 运行环境.取启动时间(); int n = 11; 控制台.输出行("Ac原创 2008-07-05 22:36:00 · 2048 阅读 · 4 评论 -
试用EF开发WEB应用程序(11): 在线留言系统
题记:用“易语言.飞扬”(EF)开发WEB应用程序,此前还没有先例。但因为EF本地开发包(EFNDK)已经发布,用C/C++开发一个EF类库,使其支持EF开发WEB应用程序,应该并非难事。当然也可想而知,其中必有诸多难点有待解决。此系列文章,为本人探索过程之记录,对外人未必有多大价值。如有网友乐观其事,还请理性待之。作者:liigo。转载请务必注明出处:http://blog.csdn.net/l原创 2008-04-29 18:26:00 · 1955 阅读 · 1 评论