饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks

04 2007 档案

     摘要: 这个方法可以实现按照统一的接口来调用类成员函数,或者静态函数和非类成员函数. 主要原理很简单, 就是保存类对象指针和函数指针, 需要调用的时候就根据类对象指针是否为空来使用不同的方式调用函数.
首先, 我们需要一个把成员函数指针转化成void *的东西..(强制转换似乎是不行的), 因为我们需要把成员函数指针保存起来, 又不想让用户写函数指针类型描述, 那只能转换成void*比较方便.
这里我们使用 联合地址转换 的方法.

template
struct _T2T{
union {
T1 _tv1;
T2 _tv2;
};
};

template
inline T1 t2t( T2 tv2 )
{
typedef struct _T2T * PT2T;
PT2T pt = (PT2T)&tv2;
ret  阅读全文
posted @ 2007-04-23 14:44 饭中淹 阅读(3488) | 评论 (12)  编辑

     摘要: 在使用C++编程的过程中, 有时候,我们可能会遇到需要构造很多重复性的参数的地方
比如
int p1, int p2, int p3, int p4

这样的参数序列, 为了方便和简化这种重复性劳动,我在工作中使用了下面这些构造参数表的宏
现在共享出来希望对大家有所帮助  阅读全文
posted @ 2007-04-18 17:57 饭中淹 阅读(1858) | 评论 (4)  编辑

     摘要: 1- 注意文件名的大小写, 这个在移植到 LINUX 这种文件系统区分名字大小写的系统上尤其重要.
2- 同样的,注意文件名大小写的同时,也应该注意避免在区分大小写的系统上创建大小写不同,但名字相同的代码文件.
3- 保证每个代码文件(CPP,H)的结尾都有单独的没有任何内容的一行, 这在CC/GCC/G++编译器下能减少很多警告.
4- 同1 和2 项所说, #include 包含头文件的时候一定要注意文件名的大小写, VC++总是把大小写搞乱, 不得不猜想微软是不是想要阻挠跨平台的软件开发...  阅读全文
posted @ 2007-04-18 12:55 饭中淹 阅读(2385) | 评论 (4)  编辑

     摘要: 在做跨平台的网络数据传输和文件数据转换和移植的时候,经常会碰到CPU字节序不同导致的各种各样的问题.
于是,在编写平台无关,字符编码无关的要求之外,又有一个新的对跨平台编码的要求,那就是字节序无关.
其实要实现这个也不难, 只要能够检测和转换字节序, 就完全可以实现.
下面提供各一种方法来解决这两个问题.   阅读全文
posted @ 2007-04-18 12:21 饭中淹 阅读(2333) | 评论 (1)  编辑

posted @ 2007-04-17 21:21 饭中淹 阅读(808) | 评论 (4)  编辑

     摘要: <2007-04-17>
1- 插件导出函数设计成C形式的也就是在函数前加 extern "C",这样保证动态连接的时候不会出现找不到名字的情况.
2- 一定要保证代码绝缘,中间接口一定要传递NATURAL类型或者纯虚指针,否则会因为一些细微的类版本不同而导致很多很多的运行错误和异常.
3- DLL中分配出来的内存,一定要在DLL内部释放,否则会导致意想不到的情况.  阅读全文
posted @ 2007-04-17 20:46 饭中淹 阅读(2615) | 评论 (7)  编辑

     摘要: 1- 不要为每个小数据包发送一个IOCP请求,这样很容易耗尽IOCP的内部队列.....从而产生10055错误.

2- 不要试图在发送出IOCP请求之后,收到完成通知之前修改请求中使用的数据缓冲的内容,因为在这段时间,系统可  阅读全文
posted @ 2007-04-14 08:44 饭中淹 阅读(11379) | 评论 (16)  编辑