C/C++
文章平均质量分 52
大招至胜
完美主义者+细节强迫症
展开
-
sizeof超级宝典
我们大家对sizeof() 并不陌生吧,在C系列语文的编程中用来求内存大小的函数, 即内存所占的字节数(byte)。如: int a,b; b = sizeof() ;如果在32位的OS上b=4,因为a是int型,占32位即4字节。相应的float也是4,short是2,char是1,double为8。如果是16位的OS占的字节数都除以2, 64位则乘以2,以此原创 2009-04-20 21:54:00 · 1247 阅读 · 0 评论 -
C++编码规范-超赞
<br />google出的C++编码规范,得到了很多专业人士的认可。<br />http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#File_Names原创 2011-03-09 14:03:00 · 1507 阅读 · 0 评论 -
游戏外挂编写学习总结
最近一段时间,学习了游戏外挂的制作。由于有windows与c/c++开发的经验,所以学习起比较轻松,没什么难度。主要就是学习熟悉一些工具如:OD,CE, 一般游戏外挂的制作过程就是首先用CE找到内存基址,然后用OD围绕着找出的基址进行分析,其中需要一些开发经验,如常用数据类型,原创 2011-09-08 15:25:45 · 10398 阅读 · 2 评论 -
c/c++中指针总结
a) int a; // An integer b) int *a; // A pointer to an integer c) int **a; // A pointer to原创 2011-08-28 12:14:13 · 1131 阅读 · 0 评论 -
C++的新语法
http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html有一个数组 int a[5] = {1, 2, 3, 4, 5};以前要遍历方法如下: for (int i = 0; i < sizeof(a); i++) { std::cout << a[i] << std::endl;原创 2012-08-23 12:58:45 · 1657 阅读 · 0 评论 -
vswprintf return -1的问题
最近在做一个变参函数的时候,format的时候总是遇到问题。vswprintf()这个方法总是返回-1. 问题代码如下:#include #include void vout(wchar_t *, wchar_t *, ...);wchar_t *format3 = L"%ls %d %ls";wchar_t *format5 = L"%ls %d %ls %d %ls原创 2012-08-23 15:22:32 · 1994 阅读 · 0 评论 -
Boost for Mac安装
最近想用一下boost,由于习惯Mac系统,所以就打算用Xcode+boost写点代码。首先得安装boost, 安装port或brew,有了它们,安装就简单了,以前我一篇文章介绍了它们的安装与使用。今天我用的是brew, 打开命令行brew install boost1.49版本的boost差不多2百多M,安装好后的目录是/usr/local/Cellar/boost/1.49.0原创 2012-12-04 22:00:21 · 7890 阅读 · 0 评论 -
用xmpp实现多人在线游戏
利用xmpp的group chat可以实现在线多人游戏。比如棋牌游戏,这样就可以省去服务端的开发,直接装一个openfire作为服务器。对于小型多人在线游戏可以一试,只不过比较费流量。。你们觉得呢??原创 2012-12-04 23:02:18 · 2308 阅读 · 0 评论 -
C++版循环缓冲区类
// 声明class CCycleBuffer {public: BOOL isFull(); BOOL isEmpty(); void Empty(); int GetLength(); CCycleBuffer(int size); virtual ~CCycleBuffer(); int Write(char* buf, int count); int Read(ch原创 2010-01-26 17:28:00 · 5607 阅读 · 11 评论 -
实时服务器框架开发(一)
最近想开发多人在线游戏,我选择了用c++, 为了不重复发明轮子,我觉定尽量采用开源框架。本系列博文将记录开发过程。网络层用Boost.asio数据库用MySQL + PostgreSQL脚本部份用Luabind第一步实现网络部份的接口。第二步实现数据库操作接口。第三步实现游戏逻辑。目标:实现跨平台的服务器开发引擎,命名为ESFramework (Easy原创 2012-12-27 17:52:36 · 1592 阅读 · 2 评论 -
eclispe CDT C++11配置
http://stackoverflow.com/questions/9131763/eclipse-cdt-c11-c0x-support我的环境是Mac lion+Eclispe+CDT, 结果可以成功编译并运行程序,但是关于c++0x的函数都提示无法resolved. 网上有人说是CDT的bug,我也不知道,反正能正常运行,那我就不管了,可能是CDT对C++的头文件解析还有缺陷。原创 2013-01-21 15:25:38 · 2578 阅读 · 0 评论 -
Eclipse+Mac+Boost开发环境
最近研究了一下boost, 由于一直用的是Mac系统,所以就想在Mac下研究boost,由于boost是开源的跨平台的,于是想到用eclipse这个IDE,因为它也是跨平台的。1.下载最新的Eclipse+CDT for Mac版本.2.安装最新的gcc48, sudo port install gcc483.用eclipse新建c++工程,toolchains请选择Cross GCC原创 2013-01-23 10:11:17 · 4364 阅读 · 0 评论 -
XCode+Boost配置
前面分别用了eclispe与netbeans这两个ide配置boost,结果发现它们对c++的支持还是不够好,经常提示无法解析方法,我转了一圈,还是回到了Xcode这个IDE.关于Xcode的配置我就简单的说一下。在Build Setting中,设置Header Search Path与Library Search Path在Build Phases中的Link Binary With原创 2013-01-30 12:58:36 · 4180 阅读 · 1 评论 -
超强数值进制转换,纯C代码
<br />今天在群里看到讨论十进制转化十六进制的代码,于是记录下来,很强的代码。<br />#define pj_hex_digits "0123456789abcdef"void pj_val_to_hex_digit(unsigned value, char *p) //十进制转成16进制{ *p++ = pj_hex_digits[ (value & 0xF0) >> 4 ]; *p = pj_hex_digits[ (value & 0x0F) ];}原创 2010-11-30 09:33:00 · 1387 阅读 · 0 评论 -
Jabber学习
<br />最近工作需要,去研究了一下jabber,在网上收集了一些资料。对jabber有了一定了解,现将收集到的资料分享出来。<br />jabber介绍:http://blog.csdn.net/fastxyf/archive/2006/05/12/725642.aspx<br />jabber一些开源库: http://xmpp.org/xmpp-software/<br /> <br /> <br />我是C/C++出生的,所以重点研究了一下开源客户端的库:gloox 它由C++所写,更多信息参考:原创 2010-09-27 21:47:00 · 1634 阅读 · 0 评论 -
位图的读取,PNG转化为BMP
#include #include #include unsigned char* LoadBMP(char* file){ FILE *fp = fopen(file,"rb"); if(!fp) { MessageBox(g_hWnd, _T("Open file error"), _T("error"), MB_OK); } BITMAPFILEHEADER hdr; f原创 2009-07-06 10:01:00 · 3707 阅读 · 2 评论 -
mp3 id3v2 中图片数据的获取
FILE *fp; BYTE cID3V2_head[10]; long ID3V2_len; BYTE cID3V2Fra_head[10]; long lID3V2Fra_length; BYTE *cID3V2Fra; if ((fp=fopen("//My Documents//我的音乐//never say goodbye.mp3","rb"))==NULL) { MessageBox原创 2009-09-08 11:01:00 · 2056 阅读 · 0 评论 -
百度,soso,yahoo音乐搜索接口
SOSO音乐接口 http://music.soso.com/music.cgi?ty=getsongurls&w=歌名&pl=歌手名百度MP3音乐接口 http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$歌手名$$$$yahoo音乐api http://developer.yahoo.com/music/下面以百度原创 2009-09-16 20:05:00 · 11424 阅读 · 6 评论 -
模拟HTTP请求, POST方法(附源码)
Fiddler是一款免费的Http抓包工具,功能强大,可与商业软件媲美。下载地址:http://www.fiddlertool.com/fiddler/version.asp #include #include #include #include "Wininet.h"#include #pragma comment(lib,"Wininet.lib")#pragma原创 2009-10-10 12:41:00 · 3229 阅读 · 0 评论 -
纯C++的Socket访问Http封装类
纯C++的Socket访问Http封装类1.项目中要使用c++++来访问Web服务器,从网上找了个C++的封装类,其中调用了MFC,在VC2005上用能用,但是移植到VC2003就出问题了,干脆修改成了纯C++的,不敢独享,share之。2.以下是调用方法:#include "stdafx.h" #include #include转载 2010-01-22 15:21:00 · 9312 阅读 · 9 评论 -
开始TOP之旅
淘宝的OpenAPI已出来一年多了,前一段时间突然接触到相关知识。对此很感兴趣,于是决定业余爱好开发TOP的小应用,也可以打发时间,呵呵。在google code上建了一个ctopsdk工程。先用C/C++对其进行封装一下,方便自己开发。第一次玩google code这种开源东西, 觉得自己又上升了一个档次。 呵呵, 心情舒畅。 CTOPSDK项目:https://code.go原创 2009-12-13 12:18:00 · 942 阅读 · 0 评论 -
位运算判断一个数是否为2的n次方
int is_power(int x){ return !((x-1) & x);} 纯位操作,不需要逻辑运算。 在手机游戏开发中,纹理不能是非2的n次方的大小,用代码可以将其转化为服合要求的纹理。其中我们要找到原图片大小下一个服合2的n次方的大小,这儿有种方法,也不需要逻辑运算:inline bool FIsPow2(int n){ if (n<=0)原创 2010-03-25 00:05:00 · 3303 阅读 · 0 评论 -
C/C++调用lua脚本函数
游戏服务端开发也有一段时间了,现在充分体会到脚本的方便与实用。下面简单介绍一下lua有基本用法。第一步:声明Lua对象指针lua_State* L;第二步:初始化lua对象指针与库L = lua_open();luaL_openlibs(L);第三步:加载lua脚本文件luaL_dofile(L, "xx.lua");第四步:执行lua中的函数lua_pcall(L, 2, 1, 0);2表示传入参数的个数,1为函数返回值个数。第五步:关闭lua指针lua_close(L);L = NULL;下面通过实例说原创 2010-07-01 20:11:00 · 3205 阅读 · 4 评论 -
C宏定义的简单总结,#的用法
<br />今天在网上突然发现了下面几个关于c代码中的宏定义的说明,回想下,好像在系统的代码中也见过这些零散的定义,但没有注意,看到别人总结了下,发现果然很有用,虽然不知有的道可用与否,但也不失为一种手段,所以就先把它摘抄下来,增加一点见识:<br /><br />1,防止一个头文件被重复包含 <br />#ifndef BODYDEF_H <br />#define BODYDEF_H <br /> //头文件内容 <br />#endif <br />2,得到指定地址上的一个字节或字 <br />#d转载 2010-06-07 19:13:00 · 1650 阅读 · 0 评论 -
Lua脚本在C++下的舞步(二)
<br />上一节讲了一些基本的Lua应用,或许你会说,还是很简单么。呵呵,恩,是的,本来Lua就是为了让大家使用的方便快捷而设计的。如果设计的过为复杂,就不会有人使用了。<br />下面,我要强调一下,Lua的栈的一些概念,因为这个确实很重要,你会经常用到。熟练使用Lua,最重要的就是要时刻知道什么时候栈里面的数据是什么顺序,都是什么。如果你能熟练知道这些,实际你已经是Lua运用的高手了。<br />说真的,第一次我接触栈的时候,没有把它想的很复杂,倒是看了网上很多的关于Lua的文章让我对栈的理解云里雾里转载 2010-08-08 11:59:00 · 6615 阅读 · 4 评论 -
Lua脚本在C++下的舞步(三)
<br />前两天一直忙于工作,没有时间来更新,呵呵,今天赶紧补上吧。<br />上一讲我把Lua基本的栈规则讲了一下,然后完善了一下我的CLuaFn类。让它可以支持任意参数数量和函数名称的传值。当然,这些功能是为了今天这篇文章而铺路的。<br />看了七猫的回帖,呵呵,确实应该说一下SWIG这个工具,说真的,我对这个工具理解不深,因为没有怎么用过,读过一些关于它的文章,似乎是帮你把C++的功能封装成一个Lua基本库的东西,但是后来研究,他可以很轻松帮你把公用函数封装成一个Lua的基本库(类似C++的dll转载 2010-08-08 12:03:00 · 13531 阅读 · 2 评论 -
Lua脚本在C++下的舞步(一)
<br /> 现在,越来越多的C++服务器和客户端融入了脚本的支持,尤其在网游领域,脚本语言已经渗透到了方方面面,比如你可以在你的客户端增加一个脚本,这个脚本将会帮你在界面上显示新的数据,亦或帮你完成某些任务,亦或帮你查看别的玩家或者NPC的状态。。。如此等等。<br /><br />但是我觉得,其实脚本语言与C++的结合,远远比你在游戏中看到的特效要来的迅猛。它可以运用到方方面面的领域,比如你最常见的应用领域。比如,你可以用文本编辑器,写一个脚本语言,然后用你的程序加载一下,就会产生出很绚丽的界面转载 2010-08-08 11:54:00 · 7284 阅读 · 6 评论 -
NetBeans+Mac+Boost开发环境
几天浪费在配置Eclipse+Mac+Boost的开发环境配置上了, 遇到了很多问题,最后对c++11的语法检查也不行。 后来果断放弃了eclipse这个ide, 选用了NetBeans这个跨平台的IDE.首先下载NetBeans for Mac, 最新版本是7.2.1。然后安装好。开启NetBeans, 然后选择菜单NetBeans->Preferences, 然后选择C/C+原创 2013-01-29 13:52:59 · 6365 阅读 · 0 评论