wink's

梦想总比现实闪耀,所以我一路追寻

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

随笔分类 -  c/c++

1 2 下一页

摘要:Important note for Visual C++ usersIf you put your tests into a library and yourmain()function is in a different library or in your .exe file, those tests will not run. The reason is abugin Visual C++. When you define your tests, Google Test creates certain static objects to register them. These... 阅读全文
posted @ 2013-01-08 21:51 wink's 阅读(292) 评论(0) 推荐(0)

摘要:msvs 9.0 默认使用的是 md, 并非mt , 故编译时请注意编译出md gtest及 mt版本 阅读全文
posted @ 2013-01-08 21:42 wink's 阅读(187) 评论(0) 推荐(0)

摘要:转自 :http://blog.csdn.net/wingfiring/article/details/632756在查看boost::aligned_storage的实现代码时,看到,其中的两个枚举量:size和alignment,size是传入类型的sizeof, alignment则是其对齐边界。alignment = ( alignment_ == std::size_t(-1) ? ::boost::detail::aligned_storage::alignment_of_max_align : alignment_ )默认情况下alignment_参数为-1,那么就来分析一下:: 阅读全文
posted @ 2012-11-21 22:54 wink's 阅读(578) 评论(0) 推荐(0)

摘要:http://cpp-netlib.github.com/latest/index.htmlcpp-netlib , http相关操作, 准备纳入boost, mark 一下 阅读全文
posted @ 2012-11-14 21:24 wink's 阅读(157) 评论(0) 推荐(0)

摘要:解决: 工具---选项---调试---常规 去掉 "要求源文件与原始版本完全匹配."DEBUG无问题, RELEASE出问题的原因之一:出现类似下面的代码:assert(char *pc = malloc(100), pc != NULL); 阅读全文
posted @ 2012-10-22 09:45 wink's 阅读(194) 评论(0) 推荐(0)

摘要:转自:http://www.math.pku.edu.cn/teachers/qiuzy/books/cppl/words.htm作者 :裘宗燕与C++相关的一些术语的翻译和问题这里讨论一些词汇的译法。在选择术语之前我都仔细想过,尽可能采用常见译法,只有在确实存在有说服力的理由时,我才决定不采用某个流行译法。也有些术语是新问题。下面是一些情况,写在这里请各位评价(起因是在china-pub书评中与读者的讨论,这里经过重新整理,增加了许多材料,以后还会不断增加新内容):关于“侵入式”(intrusive)和“非侵入式”设计将intrusive翻译为“侵入式”是我的个人选择。但“侵入式”和“非侵. 阅读全文
posted @ 2012-08-18 16:56 wink's 阅读(862) 评论(0) 推荐(0)

摘要:volatile 和 LockingPtr(原创):作者: wink声明: 此文章允许被转载, 但是请尊重作者, 请注明出处.谢谢 众所周知, 我不爱写文章, 但是今天确实很有冲动写这篇文章, 望各位看官一定注意. 下面的内容对大家多线程安全编程必有好处. 写过多线程程序的人都知道, 写出多线程安全的代码, 而且要优雅的代码, 是很困难的事. 特别是当使用STL的时候, 经常会忘记加锁, 这个问题不可谓不烦人. 下面说一种机制, 可以让编译器告知你, 你的代码有线程安全问题..听起来多么惬意的一件事情啊...是的, 本篇文章的主角就是大名鼎鼎的volatile... 先说说volati... 阅读全文
posted @ 2012-07-30 02:33 wink's 阅读(474) 评论(0) 推荐(0)

摘要:Thevolatilekeyword was devised to prevent compiler optimizations that might render code incorrect in the presence of certain asynchronous events.I don't want to spoil your mood, but this column addresses the dreaded topic of multithreaded programming. If — as the previous installment of Generics 阅读全文
posted @ 2012-07-29 22:20 wink's 阅读(292) 评论(0) 推荐(0)

摘要:DEBUG_PRINT在程序里为了调试的方便,我们经常要打印一些信息,如函数的返回值什么的,同时我们又不想在发布的程序中显示这些信息,于是我们这样实现:#ifdef _DEBUG printf("This is a debug information.\n");#endif 但是,程序中需要打印的调试信息的地方可能很多,每次都这样写也挺麻烦,所以我们定义宏#ifdef _DEBUG #define debug_print(s) printf(s)#else #define debug_print(s)#endif 这样,如果编译的时候定义了_DEBUG选项(DEBUG版), 阅读全文
posted @ 2012-07-28 01:16 wink's 阅读(646) 评论(1) 推荐(0)

摘要:(转自http://hi.baidu.com/dbfr2011818/item/8c947f2f353c00d60f37f907)在一个大的项目里面,我经常都会感到良好编程风格的作用。有的时候一些Struct或者Public的Class的数据成员总是让我们感到困惑,因为我们有时候是很难监控到它们是什么时候被改变的,当代码很多很乱的时候,靠“人肉搜索”基本上是无法真正找到改变的代码的,有的时候莫名其妙的就被改掉了,这种行为和可能性都很容易出现的。如果有一组Get和Set的话,可以在这个函数里面设置一个断点就可以知道是什么时候被改变的了。 这种时候大家可以尝试使用数据断点来处理。下面是使用数据断点 阅读全文
posted @ 2012-07-20 23:35 wink's 阅读(2766) 评论(0) 推荐(0)

摘要:constantnothrow<new>extern const nothrow_t nothrow;Nothrow constantThis constant value is used as an argument foroperator newandoperator new[]to indicate that these functions shall not throw an exception on failure, but return a null pointer instead.By default, when thenewoperator is used to a 阅读全文
posted @ 2012-06-22 10:22 wink's 阅读(369) 评论(0) 推荐(0)

摘要:thunk 在网络词典上解释为:形实转换程序或替换程序。那么到底如何转换?如何替换呢?其实可以把 thunk 理解为一小段代码,但这段代码并不是静态编译在程序的代码段中的,而是在程序运行过程中自动生成的一段代码,然后让程序在合适的时机去执行这段代码。下面是一个替换函数参数的 thunk 示例:?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include <windows.h> #include <iostream> // 定义一个函数指针。 阅读全文
posted @ 2012-05-12 22:21 wink's 阅读(2028) 评论(0) 推荐(0)

摘要:开源网络通信库参考2011-02-27 09:21734人阅读评论(0)收藏举报Sockets tcp/ip communication libraryC++ Sockets LibraryThis is a GPL licensed C++ class library wrapping the berkeley sockets C API, and therefore works on most unixes and also win32. The library is in use in a number of real world applications, both commercia 阅读全文
posted @ 2012-05-04 22:52 wink's 阅读(2436) 评论(0) 推荐(0)

摘要:使用VC++ 6.0编译使用STL的程序(如使用map、vector等)有时会出现很多warning,这是什么原因呢?使用VC++ 6.0产生的warning大多是同一个类型,例如4786,可以在预编译命令中关掉这类warning:#pragma warning( disable: 4786 )注意一定要放在#include前面 阅读全文
posted @ 2012-04-21 21:27 wink's 阅读(481) 评论(0) 推荐(1)

摘要:摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)1.概念在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主 阅读全文
posted @ 2012-03-17 20:07 wink's 阅读(25217) 评论(0) 推荐(0)

摘要:今天复习算法, 自然归并算法令我挺感兴趣,结果网上找到的基本都不怎么准确,下面通过自己的一些修改,贴出一份正确的代码! 自然归并中,有一些已经自然排好序的序列,我们称其为有序子序列! 1 void NaturalMergeSort(T aSrc[], int n) 2 { 3 T *pTmp = new T[n]; 4 int aiBreakPoint[n]; //包含各有序子序列断点 5 int iBpCnt = 0; //断点数量 6 aiBreakPoint[iBpCnt++] = 0; //aiBreakPoint[0]永远指向第一个元素 7 for (int... 阅读全文
posted @ 2012-03-14 20:11 wink's 阅读(482) 评论(0) 推荐(0)

摘要:这段时间在做一个CS模式的项目,服务端运行在linux/windows平台下,使用C语言;客户端运行在windows下,使用MFC开发;开发工具为VC++6.0企业版。。在开发服务端时,由于是使用C语言,所以经常使用malloc,free等C语言函数;在开发起初阶段,由于只是开发基础模块和基本的功能组件,所以不牵涉到多线程的开发。在开发过程中,团队的每个成员都就自己的模块编写测试用例,测试用例主要是让模块的功能流程跑一遍并确保正常。前期基本框架搭好之后,后面主要就功能业务进行开发,其中肯定要使用到多线程技术。。。在每个线程中肯定会调用malloc 和free等函数;开发一个模块之后,如果可以联 阅读全文
posted @ 2012-03-12 14:30 wink's 阅读(465) 评论(0) 推荐(1)

摘要:我现在项目是一个控制台程序,用到的Win32API都是与界面无关的,今天需要加入定时器刷新的功能,由于没有消息循环,所以WM_TIMER消息应该如何处理呢?综合了下网上找到的资料,写了个简单的demo,个人以为这种在一个线程中创建定时器,再通过指定的回调函数来处理定时器触发的模式是比较好的。#include<windows.h>#include<stdio.h>#include<conio.h>intcount=0;VOIDCALLBACKTimerProc(HWNDhwnd,UINTuMsg,UINT_PTRidEvent,DWORDdwTime){cou 阅读全文
posted @ 2012-02-17 11:48 wink's 阅读(398) 评论(0) 推荐(0)

摘要:其实很早在看LINUX下就看到这个东西,后来在MFC内存池里同样也看到了类似的东西,还依照MFC写过一个类似的小内存池,(MFC用的是return this + 1)后来在李先静的《系统程序员成长计划》里看到了类似的定义,于是心里想着总结一下,结果发现网上已经有牛人总结的很好了,于是乎就转了过来,谢谢你们的分享,这是我前进的动力!同时,需要引起注意的:ISO/IEC9899-1999里面,这么写是非法的,这个仅仅是GNUC的扩展,gcc可以允许这一语法现象的存在。但最新的C/C++不知道是否可以,我没有测试过。(C99允许。微软的VS系列报一个WARNING,即非常的标准扩展。)结构体最后使用 阅读全文
posted @ 2012-02-14 22:13 wink's 阅读(5417) 评论(1) 推荐(2)

摘要:通过运行时类型识别(RTTI), 我们能够使用基类的指针或引用来判定这些指针或引用实际指向对象的类型。这要求基类中至少要有一个虚函数。 RTTI实现的基石是每个类型对应的一个const type_info类型对象,它存储了这个对象的确切类型信息。注意,一个类型对应一个type_info对象,而不是一个对象。无论是基本类型还是用户自定义类型,都需要额外的内存来存放此类型对应的type_info对象。一般情况,一个类型对应一个type_info对象。有的时候,需要为一种类型产生多个type_info对象:一个类继承自多个继承分支,并且多于或等于2个继承分支上存在多态类。 type_info类重载. 阅读全文
posted @ 2012-01-03 16:09 wink's 阅读(355) 评论(0) 推荐(0)

1 2 下一页