C/C++
文章平均质量分 93
williamwanglei
这个作者很懒,什么都没留下…
展开
-
Gtest使用笔记
项目主页:http://code.google.com/p/googletest/详细教程:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html几点说明:1. vs2010可参考http://www.cnblogs.com/SelaSelah/archive/2012/04/11/2442525.html 将待测模转载 2013-01-25 14:11:47 · 383 阅读 · 0 评论 -
转载_程序员技术练级攻略
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历转载 2013-07-24 09:23:43 · 857 阅读 · 0 评论 -
转载___attribute__机制介绍
1. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribu转载 2013-08-14 11:44:20 · 874 阅读 · 0 评论 -
转载_va_start和va_end使用详解
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(转载 2013-11-25 11:36:52 · 685 阅读 · 0 评论 -
转载_Linux多线程编程详细解析----条件变量 pthread_cond_t
Linux操作系统下的多线程编程详细解析----条件变量 1.初始化条件变量pthread_cond_init#include int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。转载 2013-11-29 16:52:50 · 591 阅读 · 0 评论 -
转载_sscanf函数的用法
头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。转载 2013-12-03 11:27:42 · 645 阅读 · 0 评论 -
转载_srand()以及rand()函数用法(zz)
srand()就是给rand()提供种子seed 如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的,srand(n)for(10)rand()也就是说,以一个固定的数值作为种子是一个缺点。 通常的做法是 以这样一句代码srand((unsigned) time(NULL));来取代,这样将使得种子为一个不固定的数, 这样产生的随机数就不会每次执行都转载 2014-03-11 13:43:24 · 566 阅读 · 0 评论 -
转载_
如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。下面是转载 2014-05-15 20:30:36 · 450 阅读 · 0 评论 -
转载_C语言的inline
C语言的inline转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~ 本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(D转载 2014-07-30 14:43:59 · 414 阅读 · 0 评论 -
转载_纯C日志函数iLOG3
iLOG3 是一个轻便易用、概念简单,高性能、多层接口、原生跨平台、(规范使用时)线程安全的遵循LGPL开源协议的标准 C 日志函数库。基本特性如下:原生跨平台,这意味着你的软件在日志层面上是可轻松移植的,目前支持WINDOWS & UNIX & Linux ,iLOG3会在不同的操作系统上做相应的实现和优化五类日志等级变参的日志函数和日志宏转载 2014-08-25 14:26:37 · 1116 阅读 · 0 评论 -
转载_推荐!国外程序员整理的 C++ 资源大全
关于 C++ 框架、库和资源的一些汇总列表,由 fffaraz 发起和维护。内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard转载 2016-01-24 16:51:52 · 958 阅读 · 0 评论 -
转载_那些年,追过的开源软件和技术
前言笔者也是在互联网软件行业里面摸爬滚打十年多了,回头想想青葱岁月,很多时间都花在各种技术热潮的追逐上,有些是有价值的,也有些因为没人指导走过弯路,下面我就把我自己接触到这么多优秀的开源软件给大家做个梳理。也许比较枯燥无聊,供大家以后查阅。 LAMP属于创业公司的最经典组合。 Linux:不用说,大多数公司都用这个,随转载 2016-04-07 09:32:37 · 673 阅读 · 0 评论 -
转载_用Doxygen+Graphviz生成函数调用流程图 转
上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关系图。这种图有助于阅读源代码。还可以生成class(或者struct)之间的关系图,如下所示: 现在介绍如何使用Doxygen和Graphviz生成这种图:1. 下载并安装Doxygen和Graphviz。直接Google就可以找到主页,下载安装即可。2. 记住Graphvi转载 2016-04-07 17:14:53 · 1449 阅读 · 0 评论 -
转载_Copy-On-Write技术
Copy-On-Write是写时才copy的意思,有延迟操作的意思在里面。比如往磁盘写数据,先写到的是内存里面,只有文件close或flush时才真正写到磁盘。或者某个对象(值)同时赋值给多个变量,这多个变量默认情况下引用的是那个值的同一个指针,当某个变量对这个值作出改变时,才发生copy,产生一个新值给那个变量。google的gfs的快照技术就用了Copy-On-Write技术。但我不明白的是g转载 2016-04-12 10:38:23 · 446 阅读 · 0 评论 -
转载_这样读源码,不牛X也难
源代码程序员在工作过程中,会遇到很多需要阅读源码的场景,比如技术预研、选择技术框架、接手以前的项目、review他人的代码、维护老产品等等。可以说,阅读源代码是程序员的基本功,这项基本功是否扎实,会在很大程度上影响一个程序员在技术上的成长速度。2014年写《Qt on Android核心编程》和《Qt Quick核心编程》时,很多内容都是通过分析Qt源码搞明白的。这阵子研究CEF和PP转载 2016-04-26 14:40:19 · 452 阅读 · 0 评论 -
转载_软件设计的七大原则
设计模式遵循的一般原则:1.开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。这是面向对象设计(OOD)的基石,也是最重要的原则。2.里氏代换原则转载 2016-04-27 11:50:36 · 429 阅读 · 0 评论 -
转载_在IT行业获得成功,你只需一项技能
摘要:在IT行业获得成功,你只需一项技能,即问题解决能力。解决问题需遵循一定的方法论,该方法论包含五步。本文作者Jes Schultz Borland将为您仔细讲解每一步。能同时使用五种编程语言(包括一种机器语言)?不是。项目管理能力,再高就是获得PMP认证?也不是。超强的口才和书面沟通能力,正如工作职位中描述的那样?这不是痛点,但可以学习。我曾经与最好的IT专转载 2013-07-20 10:36:48 · 533 阅读 · 0 评论 -
编程语言间的依赖关系
http://exploringdata.github.io/vis/programming-languages-influence-network/转载 2013-07-17 18:34:59 · 1021 阅读 · 0 评论 -
在Visual Studio 2010中使用Google Test - 配置
我主要是想使用单元测试,VS2010是有自己的单元测试的,虽然我不抵触Microsoft的东西,但是自己做的非工业级的东西,去用Microsoft的解决方案是找罪受~所以使用了Google的测试方案。主要查阅了国外的一篇资料,虽然那位写得实在简略,但写得还是不错的,我补充梳理了一下。下载部署GTest首先去下载Google Test,网址为http://code.google.com/p/转载 2013-01-25 14:10:12 · 678 阅读 · 0 评论 -
转载_tlb与dll文件区别
tlb文件:com类型库文件,它包含接口相关信息。在需要使用对应com类的模块里,通过"#import xxx.tlb"来调用。dll: 动态连接库,它包含二进制代码,资源... , VC可以把tlb作为资源编译到dll中。在VC下#import "A.tlb" no_namespace;编译后产生A.tlh和A.tli两个文件,不生成namespace,如果没有no_namespace,则生成的转载 2013-02-18 16:50:04 · 701 阅读 · 0 评论 -
转载_Hex文件格式解析
Hex文件是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式由很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。 Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,真个文件以行为单位,每行以冒号开头,内容全部为16进制码。Hex文件可以按照如下的方式进行拆分来分析其中的内容: 例如: :0200000转载 2013-02-19 10:32:12 · 760 阅读 · 0 评论 -
转载_程序员技术练级攻略
http://sd.csdn.net/a/20110720/301922.html导读:本文是由陈皓和他的一位朋友Mailper合作完成,原名叫《Build Your Programming Technical Skills》,本文分享了Mailper和作者个人的学习经历。每个程序员都希望自己能顺利的升级到高的层次,您不妨按照下面的方法去做。前言你是否觉得自己从学校毕业的时候只做过小玩转载 2013-02-19 16:29:02 · 363 阅读 · 0 评论 -
转载_BSS段、数据段、代码段、堆、栈
BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。BSS节不包含任何数据,只是简单的维护开始和结束的地址,以便内存区能在运行时被有效地清零。BSS节在应用程序的二进制映象文件中并不存在。如果在嵌入式里,很可能没加载器,你的程序是直接由bootload程序加载转载 2013-02-20 10:33:39 · 391 阅读 · 0 评论 -
转载_C和C++混编,c调用C++,c++调用C
C和C++混编,c调用C++,c++调用C 这两天一直在解决这样的一个问题,项目之中有如下的需求: 嵌入式的产品,算法部分用C++实现,而控制程序和其它程序用C实现. 这就要求可以通过C来调用C++的算法程序. 同时,这个项目有一个PC的demo程序,是用VC开发的,这又要求C++能调用C的主控程序. 一直知道应该用extern,但是具体该如何使用,一直也不转载 2013-03-05 09:41:13 · 795 阅读 · 0 评论 -
sprintf函数用处详解
最初以为sprintf函数只是用来进行格式转换最方便,后来仔细学习发现,这个函数的功能很强大啊!下面是百度百科的介绍,直接贴过来!!sprintf求助编辑百科名片字串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf 误用导致的问题虽然严原创 2013-02-23 14:39:55 · 792 阅读 · 0 评论 -
转载_面向对象编程从骨子里就有问题——看看名人大家是如何诋毁面向对象的
摘要:面向对象编程(OOP)虽然非常流行,但并不代表所有人都喜欢它。本文综合了众多程序员名人对OOP的批评甚至诋毁,仅作为可供参考的观点。“面向对象编程是一个极其糟糕的主意,只有硅谷里的人能干出这种事情。” — Edsger Dijkstra(图灵奖获得者)“面向对象设计是用罗马数字做计算。” — Rob Pike(Go语言之父)“面向对象”这个词包含很多意思。有一半是显而转载 2013-02-25 13:31:08 · 349 阅读 · 0 评论 -
转载_Linux C调用C++库(用C封装C++接口)
(最好用g++编译,我在自己的项目中使用,使用gcc碰到过一个莫名其妙的问题)(上面的奇妙问题,好像是在C里面包含了c++的头文件所引起的,后来不包含这个头文件,而使用extern声明头文件中的函数就可以了。)C一般不能直接调用C++函数库,需要将C++库封装成C接口后,才可以使用C调用。 下面举例,说明一个封装策略: //code in add.cxx #include转载 2013-03-20 10:15:59 · 961 阅读 · 0 评论 -
转载_6个变态的C语言Hello World程序
下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。hello1.c1234567891011 #define转载 2013-03-25 18:38:46 · 585 阅读 · 0 评论 -
C语言中枚举类型作为函数入参的陷阱
C语言中,如果函数直接使用枚举类型作为入参,会带来风险,如果外部随意传入 一个大于枚举类型的值,会被强制转换成枚举类型的合法值。也就是说,会强制将数据截断成枚举类型的范围内的值。所以最好是通过typedef将枚举类型定义为UINT32,这样在函数做入参检查时,可以校验枚举值的合法性。typedef unsigned int EXAMPLE_EMUM_UINT32;C++不存在原创 2013-03-27 13:19:51 · 10786 阅读 · 1 评论 -
转载_C++ using namespace std 详解
一 :和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 因此,当使用时,相当于在c中调用库函转载 2013-04-16 20:18:24 · 700 阅读 · 0 评论 -
转载_用google mock使用方法
google mock是用来配合google test对C++项目做单元测试的。它依赖于googletest(参见我上篇文章《如何用googletest写单元测试》: http://blog.csdn.net/russell_tao/article/details/7333226),下面我来说说linux上怎么用它来做单元测试。本文包括:1、如何获取、编译google mock;2、如何使转载 2013-05-06 13:23:36 · 1358 阅读 · 0 评论 -
转载_结构体中四字节对齐的详解
一 四字节对齐的规则C++中结构体变量的存储为什么有个4字节对齐的规则,这里是假设32位机器上,CPU在读取内存数据的时候4字节对齐会取得更快的速度;这是因为:1字节8位,4字节正好32位,而32位机器的寄存器,地址什么的都是32位的,正好一次处理就完成。二 相关内容解释例如,下面的结构各成员空间分配情况:[cpp] view plain转载 2013-06-06 12:07:02 · 5085 阅读 · 0 评论 -
转载_基于探针的动态插桩
由于基于探针的动态插桩,通常只能在函数边界插入代码,难以对程序的指令流进行很好的分析,所以平时用的比较少。以前使用微软研究院的detour的API觉得它很神奇,最近看了下它的原理还是很简单:基于简单动态重写函数的开始几个字节,然后跳转到特定函数。呵呵,但是要做好还是不容易的。闲来无事写了一个很粗糙的实现。 基本原理就是:(1)保存函数的入口的几个字节,并插入一天跳回函数的jmp指令转载 2013-06-06 20:15:48 · 2179 阅读 · 1 评论 -
转载_持续集成工具
持续集成工具2014年5月21日/分类: 敏捷技术实践 /编辑: Eric本文介绍了常见的几种持续集成工具,以供从业者在工具选择时参考:HudsonCruiseControlContinuumQuickBuildBambooTeamCityCI-EyeHudsonHudson 是一个可扩展的持续集成引擎。主要用于:1.持续转载 2016-08-17 16:47:55 · 489 阅读 · 0 评论