自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

转载 C,C++宏中#与##的讲解

文中__FILE__与示例1可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。       char *pChar = "hello";

2014-01-14 18:55:05 628

原创 Xtreme ToolkitPro(1)

可能用到的例子ActivePaneView 单文档分割窗口BindSample tree包含列表ChartDialog 数据显示CommandBarControls 加载进度CustomizeTree tree显示DynamicPanes 分割窗口FlatHeader 控制listCtrl的header格式FlowGraphSample

2013-12-31 21:19:36 1346

转载 MFC中CString.Format的详细用法

原文地址:http://blog.csdn.net/wangkaishou/article/details/5846152在MFC程序中,使用CString来处理字符串是一个很不错的选择。CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串。CString的Format方法给我们进行字符串的转换带来了很大的方便,比如常见的int、float和double这些数字类

2013-12-25 12:53:34 682

原创 ON_NOTIFY消息中的id坑了我一天

使用CSplitterWnd切割窗口之后,在View类中使用CListCtrl Create了一个ListView试图在ListView中获取Windows消息,发现怎么也捕获不到使用vs2008添加鼠标消息默认使用NO_NOTIFY_REFLECT消息驱动BEGIN_MESSAGE_MAP(CUnitView, CListView) ON_WM_CREATE() ON_WM_SI

2013-12-21 21:56:41 5077

原创 VS2008 与 QT4.5 集成

原文地址:http://www.cnblogs.com/guernica/archive/2011/12/09/2282488.html最近需要在 Windows 上用 Visual Studio 来开发 Qt 程序,做了一下 VS2008 和 QT 的集成,集成完之后发现用VS开发Qt的确方便:支持控件拖拉,编译调试方便,支持代码的IntelliSense ... 。简直是开发Qt程序的不二之选

2013-12-20 16:57:20 540

原创 lua_gettable详解

lua文件全局变量如下global = { { Level = 1, sid = monster }, { Level = 2, sid = man }}C文件取值代码lua_getglobal( L, "global" );//把key压栈,其实等于把Level=1那一组table压栈lua_pushnumber( L, 1 );//以栈顶的字符串(key)为关键字,在栈索引位置( -

2013-12-20 16:57:17 5368

原创 .def导出类

用DEF从DLL导出一个函数,或用__declspec(dllexport)指令从DLL中导出一类,简单而经常使用的。这里向大家介绍一种用DEF文件从DLL导出一个类的方法:    1.打开VC6.0,新建一个"Win32 Dynamic-Link Library"工程,假设叫DefClass,在“Dll kind”选择界面中选择“A simple dll project”。    2.新建一个文

2013-12-20 16:57:15 1349

原创 va_start和va_end使用详解

介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(...);void foo(parm_list,...);这种方式和我们以前认识的不大一样,但我们要记住这是C中一种传参的形式,在后面我们就会用到它。2.函数参数的传递原理  函数参数是以数据结构:栈的形式存取,从右至左入栈。  首先是参数

2013-12-20 16:57:13 457

原创 处理问题培训总结

-团队价值有三个方面构成a. 直接成果;b.贡献人才;c.创建新的价值观管理者比较容易忽略b项-目标定位目标定位往往容易订成2级目标甚至3级目标。制定目标之后,一定要有可量化可度量的1~2个指标,并给出达到目标应该拿到一个什么样的分数目标要高,立意要新-重视将来,不重视过去重视机会,不重视困难选择自己的方向,不盲从- 管理自己记录并分析时间的使用情况(刻意去不要响应紧急的事情,延伸到工作中就是对R

2013-12-20 16:57:11 580

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。其实gtest本身的实现并不复杂,我们完全可以模仿gtest,不断的完善我们的测试框架, 但最后我们还是决定使用gtest取代掉原来的自己的测试框架,原因是:1

2013-12-20 16:57:09 498

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之八 - 打造自己的单元测试框架

一、前言上一篇我们分析了gtest的一些内部实现,总的来说整体的流程并不复杂。本篇我们就尝试编写一个精简版本的C++单元测试框架:nancytest ,通过编写这个简单的测试框架,将有助于我们理解gtest。二、整体设计使用最精简的设计,我们就用两个类,够简单吧:1. TestCase类包含单个测试案例的信息。 2. UnitTest类负责所有测试案例的执行,管理。三、TestCase类TestC

2013-12-20 16:57:06 565

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之七 - 深入解析gtest

一、前言“深入解析”对我来说的确有些难度,所以我尽量将我学习到和观察到的gtest内部实现介绍给大家。本文算是抛砖引玉吧,只能是对gtest的整体结构的一些介绍,想要了解更多细节最好的办法还是看gtest源码,如果你看过gtest源码,你会发现里面的注释非常的详细!好了,下面就开始了解gtest吧。二、从TEST宏开始前面的文章已经介绍过TEST宏的用法了,通过TEST宏,我们可以非法简单、方便的

2013-12-20 16:57:04 531

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

一、前言使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。二、基本介绍前面提到,对于运行参数,gtest提供了三种设置的途径:1. 系统环境变量2. 命令行参数3. 代码中指定FLAG因为提供了三种途径,就会有优先级的问题, 有一个原则是,最后

2013-12-20 16:57:01 504

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试

一、前言“死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的“死亡测试”。gtest的死亡测试能做到在一个安全的环境下执行崩溃的测试案例,同时又对崩溃结果进行验证。二、使用的宏Fatal assertionNonfatal assertionVerifie

2013-12-20 16:56:59 585

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化

一、前言在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。我们之前的做法通常是写一个通用方法,然后编写在测试案例调用它。即使使用了通用方法,这样的工作也是有很多重复性的,程序员都懒,都希望能够少写代码,多复用代码。Google的程序员也一样,他们考虑到了这个问题,并且提供了一个灵活的参数化测试的方案。二、旧的方案为了对比,我还是把旧的方案提一下。首先我先把被测函数IsPrime帖过来(在

2013-12-20 16:56:57 770

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制

一、前言gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCase级别的,每个TestCase前后。二、全局事件要实现全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和Tea

2013-12-20 16:56:55 471

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制

一、前言gtest提供了多种事件机制,非常方便我们在案例之前或之后做一些操作。总结一下gtest的事件一共有3种:1. 全局的,所有案例执行前后。2. TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。3. TestCase级别的,每个TestCase前后。二、全局事件要实现全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和Tea

2013-12-20 16:56:52 478

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言

一、前言这篇文章主要总结gtest中的所有断言相关的宏。 gtest中,断言的宏可以理解为分为两类,一类是ASSERT系列,一类是EXPECT系列。一个直观的解释就是:1. ASSERT_* 系列的断言,当检查点失败时,退出当前函数(注意:并非退出当前案例)。 2. EXPECT_* 系列的断言,当检查点失败时,继续往下执行。二、示例// int型比较,预期值:3,实际值:Add(1, 2)EXP

2013-12-20 16:56:50 604

原创 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初识gtest

来源:http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html一、前言本篇将介绍一些gtest的基本使用,包括下载,安装,编译,建立我们第一个测试Demo工程,以及编写一个最简单的测试案例。 二、下载如果不记得网址, 直接在google里搜gtest,第一个就是。目前gtest的最新版本为1.3.0,从下列地址可以下载到该最新版本

2013-12-20 16:56:48 584

原创 代码自动生成-宏带来的奇技淫巧

代码自动生成-宏带来的奇技淫巧Author : Kevin Lynx众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想

2013-12-20 16:56:46 1694

原创 C++大型项目开发约束

第一章简介大型软件项目通常由相应的大型开发团队承担。大型团队生成的代码要有项目范围内可评测的质量,代码必须遵从于某一标准并以此来评价。因此,对大型的项目团队来说,建立一个编程的标准或一组指南很重要。使用编程标准也使以下各项成为可能:增加开发过程代码的强壮性、可读性、易维护性;减少有经验和无经验开发人员编程所需的脑力工作;在项目范围内统一代码风格;通过人为以及自动的方式对最终软件应用质量标准;使新的

2013-12-20 16:56:43 1551 1

原创 #define 多行代码

#define test(x) int i = 100; \ while (x!=i) \ { x = x + 1; \ if (x%50==0) { \ PRINT(x);\ }\ }int _tmain(int argc, _TCHAR* argv[]){ unsigned x = 1; test(x); return 0;}输出:50100

2013-12-20 16:56:41 602

原创 #define用法集锦[修正版]

Definition[定义]:The#define DirectiveYoucan use the #define directive to give a meaningful name to aconstantin your program. The two forms of the syntax are:Syntax#defineidentifier token-s

2013-12-20 16:56:39 608

原创 #pragma region和#pragma endregion关键字

#pragma region和#pragma endregion关键字可把代码缩行

2013-12-20 16:56:36 741

原创 Linux查看系统配置常用命令

系统# uname -a               # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue   # 查看操作系统版本# cat /proc/cpuinfo      # 查看CPU信息# hostname               # 查看计算机名# lspci -tv              # 列出所有PCI设备# lsusb -tv       

2013-12-20 16:56:34 461

原创 ubuntu切换root

sudo passwd root******(输入原先的root口令)******(输入新的root口令,可以保持原样。我就保持的原样)******(再次输入新的root口令)su root之后就可以在终端中使用root权限了!Ok,搞定~~

2013-12-20 16:56:32 437

原创 vs2008环境下使用zlib库

1. 官网上下载dll库:http://zlib.net/zlib127-dll.zip2. 工程里代码编写:#include #pragma comment(lib, "zdll.lib")即可开始调用zlib的API函数3.  (1) int compress (Bytef *dest,  uLongf *destLen, const Bytef *source, uLong sourceLe

2013-12-20 16:56:29 952

原创 FindFirstFile、FindNextFile和FindClose

在开发软件的过程里,经常需要维护目录里的数据。比如在开发银行的信用卡系统里,由于每天创建的LOG非常多,那么一个很大的硬盘,在6个月后,就占用了很多空间。这时就有这样的一个需求,把所有超过6个月的LOG数据定期删除掉。要实现这个功能就得遍历整个目录,把文件名称和文件创建的时间都超过6个月时间的文件删除掉。因此,就需使用到下面的API函数FindFirstFile和FindNextFile来实现这样

2013-12-20 16:56:27 1249

原创 获取文件大小

#include       #include       #include       #include           void   main(   void   )     {           struct   stat   buf;           int   result;           char   buffer[]   =   "A   line   to

2013-12-20 16:56:25 473

原创 目录文件操作

一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。函数的输入为要查找的根目录,输出为存放所有文件名称的缓冲算法:使用递归二、代码:void FindFileInDir(char* rootDir, char* strRet){    char fname[MAC_FILENAMELENOPATH]

2013-12-20 16:56:22 447

原创 Flie遍历文件夹下的文件名

#include  #include // _findfirstusing namespace std;int main(int argc, char* argv[]) { char filespec[BUFSIZ]; struct _finddata_t fileinfo; intptr_t filehandle;if (argc == 1) { cout exit(0); } sprintf

2013-12-20 16:56:20 552

原创 CString,int,string,char*之间的转换收藏

string 转 CString  CString.format("%s", string.c_str());  char 转 CString  CString.format("%s", char*);  char 转 string  string s(char *);  string 转 char *  char *p = string.c_str();  CString 转 string  s

2013-12-20 16:56:18 446

原创 MFC最小化到系统托盘

MFC最小化到系统托盘--《VC编程知识总结》之一    在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现:    第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICONDATA NotifyIcon;该句可以放在Dlg类的声明中,作为Dlg类的一个成员;也可以放在Dlg类的实现中,作为全局变量来使用。

2013-12-20 16:56:16 499

原创 fstream

在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:   1、插入器(  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout  2、析取器(>>)   从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表

2013-12-20 16:56:13 472

原创 字符0x0d巧用

控制台程序打印的小技巧,    char ch2 = 0x0d;    for(int i=0; i!=100000; ++i)    {        cout     }这样打印将是在同一个位置上打印i值

2013-12-20 16:56:11 490

原创 PE速查

RVA的含义:相对虚拟地址 = 该数据的虚拟地址 - 映象的装载基址的虚拟地址.IMAGE_DOS_HEADER ;DOS头:00000000: DB e_magic   "MZ"0000003C: DD e_lfanew ;PE头基址,最后一个字段IMAGE_NT_HEADERS ;PE头:00000000: DB Signature "PE",0,0IMAGE_FILE_HEADER ;文件头

2013-12-20 16:56:09 576

原创 C创建文件夹

C创建文件夹#include int main(){ _mkdir("c:\\abc"); _mkdir("c:\\abc\\fadf"); return 0;}

2013-12-20 16:56:07 1706

原创 Exce 常用宏指令

声明用过VB的人都应该知道如何声明变量,在VBA中声明变量和VB中是完全一样的!使用Dim语句Dim a as integer '声明a为整型变量Dim a '声明a为变体变量Dim a as string '声明a为字符串变量Dim a as currency ,b as currency ,c as currency '声明a,b,c为货币变量......声明变量可以是:Byte、Boolea

2013-12-20 16:56:04 1066

原创 NAT分类

NAT分类经观察实际运行中NAT处理UDP有多种组合方式,四种可能的处理方式为:    ·完全锥形(Full Cone):在一个完全锥形NAT中,所有从同一个内部IP地址和端口过来的请求都被映射到同一个外部IP和端口,此外,任务外部主机可以通过映射在NAT上的外部地址发包给内部主机。    ·受限锥形(Restricted Cone):在一个受限锥形NAT,同样所有从同一个内部IP和端口发来的请求

2013-12-20 16:56:02 775

原创 宽字符函数

用atoi让我很不舒服,于是网上找到这资料,原名叫,觉得标题不妥于是把TCHAR改成WCHAR.字符分类:     宽字符函数普通C函数描述 iswalnum()     isalnum() 测试字符是否为数字或字母 iswalpha()     isalpha() 测试字符是否是字母 iswcntrl()     iscntrl() 测试字符是否是控制符 iswdigit()     isdig

2013-12-20 16:56:00 729

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除