摘要: assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息, 然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c: #include <stdio.h> #include <assert.h> #include <stdlib.h>int ma 阅读全文
posted @ 2011-11-16 14:03 kanego 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 最近,项目组让搞一个读取xml配置文件的数据库连接信息的功能。 一开始准备使用tinyxml,或者rapidxml。没注意delta3d的读取xml信息的类。 后来发现,delta3d中读取xml的类,是对xecres的一些二次封装,专门读delta3d的地图,里面含有角色代理之类的。对于读取自己的数据库连接信息不太方便。就准备用delta3d自带的xecres开源库,自己写一个。一开始以为xecres的资料应该很多,后来发现都不太完整,结合网上的一些实例。搞了二天,终于出了一版读取自己xml的一个类。写下来,以便记忆。如后来有改善,就不断更新。代码如下:头文件:#include <xe 阅读全文
posted @ 2011-11-15 15:47 kanego 阅读(1323) 评论(1) 推荐(0) 编辑
摘要: 对于配置文件,一般会选用ini,xml 等等的配置格式。如何快速高效的从文件内读取自己想要的信息是每个做配置文件想要达到的效果。对以小型开发我们并不用时用到msxml这种重量级的解析器。那样会给自己添麻烦的。这里我推荐大家使用rapidxml。之前使用tinyxml 感觉还可以。后看了rapidxml 就想换用这个开源库。经常编写跨平台软件省去编译和加载lib。4个文件实现解析xml而且超高效官网还拿他跟strlen比较速度牛X吧看看下面的表。其他废话我就不多讲。其实之前也有人介绍这个库怎么使用。这里我就给几个链接。燕良博客:http://blog.csdn.net/Neil3D/archiv 阅读全文
posted @ 2011-11-13 21:49 kanego 阅读(8891) 评论(0) 推荐(0) 编辑
摘要: C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)、各种跨平台应用的出现。开源C++库必须具有以下特点:必须是成熟的产品、跨平台的产品、相对通用的库。一、通用标准类STL:C++标准模板库,呵呵,它也是开源的嘛。boost:C++准标准库,它是强大地 阅读全文
posted @ 2011-11-10 21:06 kanego 阅读(13865) 评论(43) 推荐(31) 编辑
摘要: 1, OTL是什么OTL是一个数据库访问模板库,支持绝大部分数据库访问。OTL是C++写的,based on templates, 只有一个头文件,大小只有800K+。使用方便,性能也很不错可以使用OTL访问基本上所有的数据库,在你更换数据库时不用修改任何业务代码强烈推荐在C++开发中使用2,OTL下载http://www.veda.dk/~clr/doc/otl/otlv4_h.zip3,OTL使用参见OTL Samples: http://www.veda.dk/~clr/doc/otl/otl3_examples.htm4,多线程下使用OTL时几个注意的地方1) static int o 阅读全文
posted @ 2011-11-10 10:15 kanego 阅读(1808) 评论(0) 推荐(0) 编辑
摘要: 在http://otl.sourceforge.net/otl3_stream_class.htm 中对buffer size 的说明是:The buffer size is defined in logical rows to inserted into a table, selected from a table / view in one round-trip to the database (a.k.a. batch size, array size). 为此做了如下例子进行了测试.代码如下:// TestOCT.cpp : Defines the entry point for th 阅读全文
posted @ 2011-11-09 09:39 kanego 阅读(1869) 评论(0) 推荐(0) 编辑
摘要: OTL之Oracle开发总结---转关于OTL,网上介绍的也不少,但看来看去也只是官方的那些文档。OTL很好用,结合官方提供的一些例子,多多尝试才能领悟。经过一个月左右的项目开发,对OTL也有些了解,在这里总结一下,希望对刚接触OTL的新手有所帮助。其中有些地方,比如对网络异常的处理,可是费了我两天的时间才解决的,我那个汗哪。废话少说,开始正题:一、开始前的准备工作在使用OTL进行编程之前,要首先确定使用的Oralce版本以及所选用的字符集。OTL支持目前几乎所有的主流数据库,可以通过宏启用otlv4.h中对应的数据库操作接口。如:使用oracle 11g R2、字符集选择UTF8,则可在包含 阅读全文
posted @ 2011-11-08 14:07 kanego 阅读(3404) 评论(0) 推荐(0) 编辑
摘要: 这个问题困惑好几天了。废话不多说,先上代码。 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 virtual void aa() 8 { 9 } 10 private: 11 char k[3]; 12 }; 13 14 class B:public A 15 { 16 public: 17 virtual void bb() 18 { 19 } 20 privat... 阅读全文
posted @ 2011-11-06 20:22 kanego 阅读(1536) 评论(0) 推荐(0) 编辑
摘要: 下列情况,为了让程序顺利编译,必须使用成员初始化表。1、当初始化一个reference member时; 2、当初始化一个const member时; 当类成员中含有一个const对象时,或者是一个引用时,他们也必须要通过成员初始化列表进行初始化,因为这两种对象要在声明后马上初始化,而在构造函数中,做的是对它们的赋值,这样是不被允许的。 3、当调用一个base class的constructor,而它拥有一组参数时; 4、当调用一个member class的constructor,而它拥有一组参数时;list中的项目执行次序是由class中的members 的声明次序决定的,不是由initia 阅读全文
posted @ 2011-11-06 16:55 kanego 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 前言:纠结了很长时间,remote actor(模拟本地actor的行为) 到底如何创建的呢?是自己手动,抑或是系统自动创建?由于delta3d,本身的说明文档少之又少,而其自带的demo 也没有这方面的应用。Oman大哥和我通过跟踪基于delta3d的开源类库SimCore中的例子netdemo,了解到 这些是通过对本地的actor的稍加些属性,就可以由系统自动创建。正文:用到的主要类库:dtGame、dtDAL,相关类:GameManager、GMComponent、GameActor、GameActorProxy。不懂的请仔细看下delta3d官网自带的说明文档(末尾的qq群共享里也有O 阅读全文
posted @ 2011-11-03 19:52 kanego 阅读(1383) 评论(0) 推荐(1) 编辑