C/C++
文章平均质量分 73
shallwake
I am nobody.
展开
-
赏心悦目的宏代码
常常看到一些优秀的宏代码,惊叹之余也就不了了之,今天在这做一个整理,也许不够完善,以后会继续补充。 补充一个用于模块化开发:刚写完去逛云风GG Blog就发现了。。http://blog.codingnow.com/2010/01/c_modularization.html#mor 索引:1.1 避免重复包含头文件 1.2 ACM刷题用的宏1.原创 2010-01-29 02:58:00 · 2503 阅读 · 4 评论 -
[SheRO]Lua框架搭建的一点思路
脚本的搭建真的是件非常具有创造性的事情,也是游戏开发里最核心的技术活,因为它是整个游戏的发动机,粘合剂,涉及整个游戏的方方面面。一般还集成在地图编辑器里,比如War3,RPGMaker这些。总之,把脚本框架搭好,我个人认为是一个好游戏必备的核心要求。 今天刚把SheRO的Lua框架搭完,觉得用来创作自己的小游戏完全够用了。还是记一些思路吧,仅供参考,不涉及源码及Lua与C++集成这些,因为我觉得这些开源后就能看明白的,而且我用的是LuaPlus。实在没啥讲的。 我在SheRO里暴露给Lua的函数有这些,原创 2011-04-23 23:05:00 · 5307 阅读 · 1 评论 -
[DEBUG]记一次野指针调试
<br />关于野指针,我觉得最可怕的情况就是,它在程序大部分时候都不会出错,当你项目越来越大的时候,可能就会出现各种随机性诡异错误了,而这时你压根就不会想到是自己很久前的一次疏忽。<br />我在shero里用的实体框架是这样的,逻辑对象为Entity,视觉对象为Visual,Visual根据Entity来渲染自己,所以它保存了一个Entity指针m_pEntity。<br />更新流程是:<br />Entity->Update();<br />Visual->Update();<br />当Entit原创 2011-04-18 11:58:00 · 4421 阅读 · 0 评论 -
[DEBUG]做项目切忌编译器版本混乱
<br />蛋疼。今天装了XP双系统,重新装了VS2005,没有打SP1补丁。<br /> <br />以为都是2005嘛,运行不会有问题,哪晓得出现了一个非常诡异的运行错误,类似heap corruption的这种诡异,源头在第三方库CEGUI里,很难调试。<br /> <br />最后才恍然大悟我用的CEGUI是用打了SP1补丁的VS2005编译的,也许是这个问题,重新编译后就没问题了。<br /> <br /> 那么关于第三方库的问题,总结一下就是一定要保证编译环境相同。编译环境涉及很多方面,原创 2011-04-16 21:33:00 · 2283 阅读 · 0 评论 -
[DEBUG]内存泄露调试
呼。。又是一次痛苦的调试经历,赶紧记点心得吧。虽然是一个很傻X的失误,但是经历的过程还是收获蛮多的。开始之前,顺便透露一下,关于shero,我已经决定做一个单机开源RPG了,最迟在5月发布吧,最终效果相信不会令大家失望。。:) 好了,起因是这样的,因为集成了CEGUI,界面基本搭好时,却发现有严重的内存泄露,至少当时我是这样认为的,然后便开始尝试各种办法,没有结果。其实最后才发现,原因很简单,我自己的项目里加入了这个设置: _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _C原创 2011-04-07 11:54:00 · 3285 阅读 · 0 评论 -
我晕,一个低级错误导致我DEBUG两天(std::string c_str()的问题)
起因是这样的,为了方便读取RO里的素材,我在OPenRO里加入了一个第三方库,他的作用主要就是负责提取RO素材数据,并把他们放在heap里,程序退出他会自动释放。 但是莫名其妙的问题随之而来了:每次程序退出都会弹窗提示:“******,其原因可能是堆被损坏,这也说明****加载的Dll可能有问题”。看见这个,我第一反应是Dll里分配的内存在程序里释放时,Dll与exe使用了不同的C运行时库。但是我使用的这个第三方库根本就是一个静态lib啊,而且使用的C运行时库版本绝对是一样的。 我就郁闷了,剩下只有一种原创 2011-01-20 23:01:00 · 8098 阅读 · 3 评论 -
扩展C++STL制作Socket Stream
主页备案2个月了,还没成功,继续在这发点水言。 以前就有此想法,想想C++的iostream,那是多么滴方便,我感觉是比java I/O库还好用。内置缓冲机制,安全性与方便性都很优秀,那么可不可以扩展它做一个SocketStream出来,从而告别臃肿复杂的Berkly套接字呢? 我没实践过,但是答案是肯定滴,而且强人早已实现,我在此提供两个资料,其余后文都是废话,迫切找资料者可以略过。 So原创 2010-01-11 20:57:00 · 3682 阅读 · 0 评论 -
各种小巧的Hello World
在Reddit看到这篇文章:Hello from a libc-free world!,觉得挺有趣,然后又想起以前看过的各种相关资料,在此做一个整理。注意所有实验环境都为Linux。版本一:实际上是用汇编重写_start入口,具体说明请看文章开头提供的连接,汇编代码如下,命名为stubstart.S _start: call main movl $1, %eax原创 2010-03-17 19:28:00 · 3288 阅读 · 0 评论 -
记一道C笔试题,各种猥琐解法。
声明:此文的各种猥琐解法转自电子科大内网论坛,对,就是最近因”许愿门“而上各大新闻网站的学校。 题目如下:#include "stdio.h"void print(){ *}void main(){}要求在*号处添加语句,程序输出hello,world! 好了,我直接贴答案了,相信大家都看得懂,有些实在是猥琐。。。也欢迎大家原创 2010-03-13 15:02:00 · 2957 阅读 · 5 评论 -
发一个C++写的跨平台的BlockingQueue
BlockingQueue大家都不陌生吧,它简化了多线程的开发,常用于生产者-消费者模式。可惜只有java这些高级语言才提供。我参考了网上的跨平台线程类,写了个跨平台的BlockingQueue,希望对大家有帮助。 下载地址:http://download.csdn.net/source/2052785 使用方法: Linux下请切换到目录,make即可。(Makefile还不太熟悉,凑合着能用就原创 2010-02-07 14:19:00 · 3390 阅读 · 6 评论 -
娱乐,C语言模拟C++虚函数多态性。
看有感,原来C语言可以这样玩。。仔细想想,C++不也是在汇编层面上的封装么。膜拜这些语言设计者,深谙计算机科学的精髓,真是长见识了。本文只是简单模拟下多态,大体上就是C++的虚函数表机制,并没有考虑类域与继承机制,真要讨论起来那就麻烦多了,推荐大家可以看看PY源码解析,里面有简单介绍。我拿传统的圆与正方形问题为例子,基类是Shape,每个类定义虚函数showShape(),从而体现多态。原创 2009-12-05 00:25:00 · 3932 阅读 · 1 评论 -
发布NetWay网络编程引擎测试版。
呵呵,之所以称作引擎只是觉得这名字比较酷而已。断断续续写了好久了,由于自己是面向对象编程新手,所以只是做了一点浅浅的封装,将网络编程的数据传输模块与逻辑模块隔离,并提供接口供客户端使用。 下面先简单介绍下特点吧。 1,简化了网络编程,使客户只需定制自己的协议与逻辑就可实现各种网络软件。 2, 服务端用Java实现,客户端用C++与Socket实现(有几个线程操作用了W原创 2009-12-04 18:36:00 · 1597 阅读 · 1 评论 -
一个Http多线程下载与断点续传的DLL
由于做东西需要,所以写了这个小工具,喜欢的朋友就收下吧。此Dll就是导出一个下载函数,支持多线程与断点续传。纯socket实现,参考了很多代码。还是比较有学习价值。 没有经过严格测试,应该会有 BUG,里面有一个多线程操作downloaded+=nLen的代码段应该加锁的,但是考虑到downloaded只是用于统计下载速度,不影响整体核 心。所以没加锁。貌似也没啥错误。。经测试一般开原创 2009-12-04 18:54:00 · 2687 阅读 · 1 评论 -
2.5D开源ARPG-时之深渊发布
一个业余项目,断断续续做了很久,总算做成一个RPG了,可惜本人是一个只会敲代码的理工男,加之个人精力有限,所以这个游戏几乎没有可玩性。现在放出源码,希望能帮助到需要帮助的人吧。 关于源码: 除了界面库使用了CEGUI,其他游戏模块都是自己写的。 素材破解取自网友们的研究成果,自己只做了很小一部分,素材提取代码全部独立在ROInterface.lib里。 有关源码的编译及其他信息请阅读readme.txt。 还有RO素材格式请参阅:http://bbs.rohome.net/viewthread.p原创 2011-05-03 15:41:00 · 7246 阅读 · 3 评论