摘要: 1、枚举类型enum EColor{eRed, eYellow}中,EColor和eRed,eYellow的作用域是相同的。即EColor和eRed被定义在同一个地方。2、联合类型union中的成员,可以是基本类型,数组,枚举的变量。但如果union的成员是一个class或struct类型,则这个类型必须有一些限制,如:不能含有用户定义的构造方法,复制构造等。3、extern int ival = 10; //初始化,所以是定义。 double money; //没有extern关键字,所以是定义 以上两条语句都是定义。4、类,const变量和inline函数可以在多个源文件中重定义,只要他们 阅读全文
posted @ 2012-02-12 21:05 夜塔 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplusextern "C" {#endif//一段代码#ifdef __cplusplus}#endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern "C",还得从cpp中对函数的重载处理开始说起。在c++中,为了支持重载机制,在编译生成的汇编码中,要对 阅读全文
posted @ 2012-02-12 20:13 夜塔 阅读(142) 评论(0) 推荐(0) 编辑
摘要: age ++; while(true) { MakeFriends(); WorkHard(); LearnAlways(); MakeMoney(); WhereIsMyHouseAndCar(); } do { LookForGF(); }while(!bHaveGF); if(bHaveGF && bHaveEnoughResource) { Marry(); } 这... 阅读全文
posted @ 2012-02-12 20:11 夜塔 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 进来测试在压力测试我参与的一个软件,问题出了不少,有些还很奇怪,感觉以前的问题重现了。 测试看到bug喜,开发看到bug烦,可是烦归烦,自己做的事就要用于承担。 不过在检查代码和日志时,我们可以检查下测试部的环境,因为有些问题确实是因为测试部的环境有问题所导致的。 检查的方面: 1、确定测试用的软件版本正确: 测试使用的软件版本是不是我们想要他们测的,这个看下exe文件的最后修改时间,或者看exe的版本就能确认。 2、确定测试的配置是正确的: 有时候,测试的配置小错一项就可能导致非常严重的问题。 3、查看系统日志: 在Windows 2003上就是查看事件查看器,是不是有严重的错误在测试的时. 阅读全文
posted @ 2012-01-12 20:37 夜塔 阅读(127) 评论(0) 推荐(0) 编辑
摘要: (一)单行注释:以#开头的行都被perl认为是注释。但是有一个例外,perl程序的第一行是#开头的,他指定了perl程序的解释器。例如:#print 1;(二)多行注释:最常用的方法是使用 POD(Plain Old Documentations) 来进行多行注释。方法如下: =podcodes to comment=cut注意:=pod =cut只能在行首以=开头,以=cut结尾。 注意:=后面要紧接一个字符。=cut后面可以不用。 阅读全文
posted @ 2011-12-01 19:07 夜塔 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1、在vs 2005的watch窗口中,任选一行,写入@err,hr即可看到程序的LastError值。 另外,vs 2005还提供了一个错误查找的小工具,可以将错误码转化为人可以看懂的文字。2、日志是调试代码的神器。 阅读全文
posted @ 2011-11-08 19:25 夜塔 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 这几天我的程序遇到一个莫名其妙的错误,代码执行到一个lib就挂。而我的代码是完全参考一段成熟的代码来调用这个lib的。懊恼啊,最后柳暗花明,原来我在debug版链接的是release版的lib。 这已经是我第二次犯这个错误了,上一次是有两个项目生成重名的lib,结果也乱掉了,程序一执行就挂。 所以,我感觉记下这个错误,以及所有能让程序挂掉的情况会很有好处。 当程序出现莫名其妙的错误,你会想到什么? (1)链接了不同版本的库(连接错误版本的静态库或者动态库)。 (2)如果你的程序在本机运行好好的,到其他机子就挂,很可能是那台机子上缺乏运行环境,比如C++的运行库。 (3)内存非法访问。 .... 阅读全文
posted @ 2011-10-27 12:48 夜塔 阅读(220) 评论(0) 推荐(0) 编辑
摘要: C++语言中的<ctime>头文件,也就是C语言的<time.h>中提供时间函数。其中主要是3中数据结构:time_t,clock_t和struct tm。其实time_t和clock_t都是一个整形数,time_t记录的是秒数,而在Windows下,clock_t存储的是毫秒数。 一、获取时间 1、clock_t clock ( void ); 作用:获取程序运行的clock数。在Windows下,每秒有1000个clock,也就是clock的精度是1毫秒。2、time_t time ( time_t * timer ); 作用:可以得到从1970年1月1日到现在的秒 阅读全文
posted @ 2011-10-18 19:52 夜塔 阅读(682) 评论(0) 推荐(0) 编辑
摘要: C/C++编译器的预处理器定义了一些名字:__FILE__,__LINE__,__FUNCTION__,__DATE__,__TIME__等。 顾名思义: __FILE__:表示当前文件的文件名(含绝对路径)。 __LINE__:表示当前行号。 __FUNCTION:表示当前函数名字(不包括返回值和实参,仅仅是函数名) __DATE__:表示预编译的日期吧(应该是这样的) __TIME__:表示预编译的时刻吧(应该是) 通过他们我们就可以实现对代码的跟踪。 程序代码:#include <iostream>#include <cstdlib>using namespace 阅读全文
posted @ 2011-05-28 23:44 夜塔 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 来源:http://www.cppblog.com/shaovie/articles/14038.htmlC语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Wa... 阅读全文
posted @ 2011-05-28 23:11 夜塔 阅读(164) 评论(0) 推荐(0) 编辑