c/c++
文章平均质量分 57
tenfyzhong
轮子工程师
展开
-
函数调用规则
很多C语言入门程序猿在学习C语言或者windows开发时会看到_cdecl,_stdcall函数调用规则。而一般的书籍都没有对其进行说明。除了这两个调用外,还有pascal方式的调用。下面是对这三个调用的一点解释。 一般的C语言编译器都是默认使用_cdecl规则的。去看vc中的一些头文件很发现,有很多都是_stdcall规则的。而pascal方式的规则很少用。原创 2013-11-23 22:16:41 · 713 阅读 · 0 评论 -
通用工厂类Factory(C++实现)
灵光一闪: 抽象工厂模式经常被使用,那么同时也会多次写相同或类似的代码。能不能设计一个通用的工厂类,以避免重复设计工厂类呢?原创 2014-04-16 13:20:12 · 4727 阅读 · 0 评论 -
设计模式->观察者模式
观察者模式能非常大的减少模块之前的耦合。具体的观察者模式,客官们可以去看《设计模式》或者《Head first设计模式》等之类的书。在java中,java.util库中封装了观察者模式。在C++中并没有这玩意。以下就是为了封装一个C++的观察者模式而写。观察者模式中,对于主题(subject)和观察者(observer)的接口可以是抽象出来的,而这些接口差不多都是通用的,然原创 2014-04-21 12:57:07 · 1029 阅读 · 0 评论 -
C++->string与数值类型的拼接
从Java和C#转到C++的程序原创 2014-04-18 23:49:23 · 3388 阅读 · 0 评论 -
C++->大小端转换
在网络编程中,dd原创 2014-04-17 12:45:08 · 6382 阅读 · 1 评论 -
gtest汇总
gtest,也就是google test,看名字就知道是google的东西。这货是c++单元测试框架。虽然,在快速的开发节奏中,可能会说没有时间去写单元测试。但是,有时单元测试确实能给我们带来挺多方便,比如重构。比如在写较低层代码时,可能上一层的代码不是你写,而等别人写了再调用上一层的去测试,这时出错可能会在低层的出错,也可能在上一层的出错,而且还要等上一层的代码完成。等等。。。原创 2014-01-13 13:36:28 · 628 阅读 · 0 评论 -
gtest->simple tests
以下步骤创建一个测试使用TEST()宏来定义和命名一个测试函数,这些函数是普通的C++函数,且没有返回值。在函数里面,可以使用任何支持的C++语法,使用大量的断言来检查值。测试的结果决定于断言。如果任何的断言失败(不论是fatal还是非fatal),或者测试崩溃,整个测试就失败。TEST(test_case_name, test_name){... test body ..原创 2014-01-13 13:42:09 · 655 阅读 · 0 评论 -
gtest->assert
gtest提供两个版本的断言,ASSERT_*和EXPECT_*。ASSERT_*会产生falat错误,当断言失败的时候,当前函数会被中止。EXPECT_*不会产生falat错误,当断言失败的时候,当前函数不会被中止。EXPECT_*版本应该更优先选择,因为它允许报多于一个的失败。但是,当不想函数继续运行下去时,要用ASSERT_*版本。ASSERT_*错误从当前函数返原创 2014-01-13 13:40:47 · 3539 阅读 · 0 评论 -
gtest->编译
由于基本都是在linux下码字,所以以下只给了linux下的编译方法,windows和mac的自己看官方的wiki。linux在make目录下,执行make会生成文件中有一个gtest_main.a。里面包含了gtest的测试函数和一个main函数。使用时,链接这个gtest_main.a在.bashrc中设置一个变量GTEST_INCLUDE加入gtest的头文件位置原创 2014-01-13 13:38:11 · 656 阅读 · 0 评论 -
C++->network设计
现行开发的软件中,基本没有啥是不联网的。连一个小小的游戏,也要联网,去下载点广告什么的。那么网络层的是不是可以有很多东西可以重用的呢?本人之前在一个游戏公司做服务器端开发。有一个网络架构是这样设计的。网络使用了IO复用模型select。当然,对于现在的服务器,可以使用epoll代替。一个Opcodes类,类成员都是静态的常量,用于表示与服务器通信的操作码。我们称原创 2014-05-01 00:01:08 · 1425 阅读 · 0 评论