- 博客(51)
- 资源 (4)
- 收藏
- 关注
转载 C/C++开源项目中的100个Bugs
俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQL等的源码进行了分析,找出了100个典型的Bugs。个人觉得这份列表对C/C++ 程序员有一定参考意义。与其说事后用静态工具分析,倒不如在编码时就提高自知
2015-02-09 19:33:21
789
转载 C/C++开源项目中的100个Bugs
俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQL等的源码进行了分析,找出了100个典型的Bugs。个人觉得这份列表对C/C++ 程序员有一定参考意义。与其说事后用静态工具分析,倒不如在编码时就提高自知
2015-02-09 19:24:40
724
转载 C/C++开源项目中的100个Bugs
俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQL等的源码进行了分析,找出了100个典型的Bugs。个人觉得这份列表对C/C++ 程序员有一定参考意义。与其说事后用静态工具分析,倒不如在编码时就提高自知
2015-02-09 19:14:12
717
转载 C/C++开源项目中的100个Bugs
俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQL等的源码进行了分析,找出了100个典型的Bugs。个人觉得这份列表对C/C++ 程序员有一定参考意义。与其说事后用静态工具分析,倒不如在编码时就提高自知
2015-02-09 18:10:48
621
转载 C/C++开源项目中的100个Bugs
俄罗斯OOO Program Verification Systems公司用自己的静态源码分析产品PVS-Studio对一些知名的C/C++开源项目,诸如Apache Http Server、Chromium、Clang、CMake、MySQL等的源码进行了分析,找出了100个典型的Bugs。个人觉得这份列表对C/C++ 程序员有一定参考意义。与其说事后用静态工具分析,倒不如在编码时就提高自知
2015-02-09 18:09:37
521
转载 C++知识点系列之二
C++知识点系列之二1. 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) 这个测试是为下面的目的而设的:1) 标识#define在宏中应用的基本知识。这是很重要的。因为在 嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码
2015-01-01 09:16:27
615
原创 c头文件一览表
头文件一览表 C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include /
2015-01-01 09:14:19
625
原创 Linux C调用C++库
调用C++函数库,一般不能直接调用,需要将C++库转换成C接口输出,方可以使用C调用将 C++ 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者C++ 代码里调用)。例如:// C++ code:extern"C" void f(int); void f(int i){ // ...} 然后,你可
2015-01-01 09:12:06
1261
原创 C中如何调用C++函数、类内函数
C中如何调用C++函数、类内函数 在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。 将C++函数声明为``extern "C"''(在你的C++代码里做这个声明),然后调用它(在你的C或者C++代码里调用)。例如:// C++
2015-01-01 09:06:46
3407
原创 C++和C语言函数相互调用之二
1.引言 C++语言的创建初衷是“abetter C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程 式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支 持函数的重载,C++对全局函数的处理方式与C有明显
2015-01-01 09:03:36
842
原创 C C++相互调用
C C++相互调用 在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题,但只要我的C代码和我的C++代码分别都能成功编译,那其他就不是问题。近来在主程序是C语言,而调用C++功能函数的时候,C++的*.h头文件都能找到,功能函数也都定义了,最重要的是,单独编译C++的时候,完全没有问题,但当用主程序的C调用C++的功能函数时,总是提示该函数未定义(
2015-01-01 08:55:17
520
原创 C常用区别
最主要的用途就是当函数不处在同一个文件当中,比如动态库,要调用其他程序中的函数就只有采用回调的形式; 回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。回调函数使用是必要的,在我们想通过一个统一接口实现不 同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同的显示函数:void TVshow();void ComputerShow();
2015-01-01 08:49:36
1066
转载 C++知识点系列之三
C++知识点系列之三关于预处理 #define的常量用const取代,宏用inline函数取代。在类定义中定义的函数自动为内联函数。也可以使用inline修饰函数使其成为内联的。inline只有在函数定义时才会发挥作用。因此头文件中的内联函数都是有函数体的。inline的函数也是内部联接的。friend的函数也可以是inline的。inline只是对编译器的优化提示
2015-01-01 08:33:03
596
转载 C++知识点系列之一(转+整理)
c系列之一一、#include “filename.h”和#include 的区别#include “filename.h”是指编译器将从当前工作目录上开始查找此文件#include 是指编译器将从标准库目录中开始查找此文件二、头文件的作用加强安全检测通过头文件可能方便地调用库功能,而不必关心其实现方式三、* , &修饰符的位置对于*和&修饰符,为了避免误解,
2015-01-01 08:27:02
443
原创 <<c++设计与演化>>
>1.c++的保护模式来自于访问权限许可和转让的概念; 初始化和赋值的区分来自于转让能力的思考; c++的const概念是从读写保护机制中演化出来. 2.BCPL注释: CPL(Combined Programming language,组合编程语言):CPL是一种在ALGOL60基础上更接近硬件的一种语言。CPL规模大,实现困难。 BCPL(Ba
2015-01-01 08:21:04
811
原创 C++内存对象大会战 禁止产生堆对象 禁止产生栈对象
C++内存对象大会战 禁止产生堆对象 禁止产生栈对象如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这些问题都是不易发觉的,比如内存泄漏,比如悬挂指针。笔者今天在这里并不是要讨论如何
2015-01-01 08:09:45
995
原创 C&C++的标准库
C&C++的标准库1.什么是C&C++的标准库? C语言被发明出来时并没有什么库函数,随着C语言的流行,越来越多的厂商或者机构组织开始提供C的编译器,并且同时把经常用到的函数封装成“库”的形式发布;不同的组织发布的库函数的接口和数量各不相同。后来,标准化组织ANSI制定了C语言的标准,同时也制定了一定数量的库(或库函数),就就成为标准库函数。(后来这个ANSI C
2015-01-01 08:01:00
519
原创 C 预处理指令
C 预处理指令C语言中的条件编译指令过多的话,会严重影响代码的阅读──影响整体的美观(到处都是#号看起来很不爽,而且这种结构没有参与整体的缩进,不容易找到正确的闭合位置),分散读者的注意力(同一个功能,面向不同的平台或针对不同的情况的代码都堆在一起,靠成阅读者精力浪费)。所以,我们的原则是,不到万不得已不用C语言中的条件编译指令(很多时候可以用注释替代);在不得不使用时,要在代码文
2015-01-01 07:55:25
546
转载 C/C++中的段错误(Segmentation fault)
Segment fault 之所以能够流行于世,是与Glibc库中基本所有的函数都默认型参指针为非空有着密切关系的。 来自:http://oss.lzu.edu.cn/blog/article.php?uid_7/tid_700.html#comment 背景 最近一段时间在linux下用C做一些学习和开发,但是由于经验不足,问题多多。而段错误就是让我非常头痛的一个问
2015-01-01 07:51:19
913
转载 Linux环境下段错误的产生原因及调试方法小结
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是著名的“段错误”(Segmentation Fault)。借此机会系统学习了一下,这里对Linux环境下的段错误做个小结,方便以后同类问题的排查与解决。1. 段错误是什么一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,
2015-01-01 07:48:51
449
原创 #define、const、typedef的区别
#define 并不是定义变量, 只是用来做文本替换 例如: #define PI 3.1415926 float angel; angel=30*PI/180; 那么,当程序进行编译的时候,编译器会首先将 “#definePI 3.1415926”以后的,所有代码中的“Pi”全部换成“3.1415926” 然后再进行编译。 我查到一个讲const与#def
2015-01-01 07:45:29
551
转载 #define总结-#define用法集锦 (网上资料汇集)
#define总结-#define用法集锦(网上资料汇集) Definition: The #defineDirective You can usethe #define directive to give a meaningful name to a constant in your program.The two forms of the syntax are:
2015-01-01 07:26:50
910
转载 《软件调试的艺术》学习笔记——GDB使用技巧摘要——Pthread线程调试
Unix下最普遍的线程包是POSIX标准的Pthreads。Pthreads使用的抢占式线程管理策略,程序中的一个线程可能在任何时候被另一个线程中断。所以,使用Pthreads开发的应用程序有些错误不太容易重现。GDB线程相关命令汇总1 info threads给出关于当前所有线程的信息2 thread n改为线程n,或者说是进入线程n的栈中进行观察
2015-01-01 07:09:43
1029
1
转载 《软件调试的艺术》学习笔记——GDB使用技巧摘要——程序崩溃处理
《软件调试的艺术》学习笔记——GDB使用技巧摘要——程序崩溃处理 1 程序为什么会崩溃2 内存中的程序布局当某个错误导致程序突然和异常地停止执行时,程序崩溃。迄今为止最为常见的导致程序崩溃的原因是试图在未经允许的情况下访问一个内存位置。硬件会感知这件事,并执行对操作系统的跳转。Unix系列的平台上,操作系统一般会宣布程序导致了段错误(seg
2015-01-01 07:06:53
890
1
转载 《软件调试的艺术》学习笔记——GDB使用技巧摘要
《软件调试的艺术》,因为名是The Art of Debugging with GDB,DDD, and Eclipse.作者是美国的Norman Matloff和Peter Jay Salzman,中文版由张云翻译。是人邮出版社图灵程序设计丛书初版。这里称为"艺术",个人觉得有点过了,但是其中关于gdb以及在gdb基础之上集成的DDD和Eclipse调试技巧的整理确实是做的很好,对于Li
2015-01-01 07:05:29
1056
2
原创 工具——将windows文本格式转换为UNIX格式
将windows文本格式转换为UNIX格式1、使用sed命令来进行转换,如下: sed -e ’s,^M,,g’ textfile 其中^M的输入方法是Ctrl+V, Ctrl+M 对于批量文件的处理,可以用下面的命令: for f in `echo *.c`; do sed -e ’s,^M,,g’ $f;done 2
2014-12-30 11:49:28
6555
原创 工具——ultraedit常用技巧
Ultra Edit 常用的快捷键Key1 自动换行_CTRL + WKey2 插入当前日期/时间——F7Key3 找到匹配的括号 (,[,{ or },],)——CTRL + BKey4 转换所选文字为小写——Ctrl+ F5Key5 设定书签——CTRL + F2Key6 转到指定行——Ctrl + GKey7 10个剪贴板——Ctrl+0-9 众
2014-12-30 11:43:58
5189
原创 工具——基于SVN自动生成版本号的方法
基于SVN自动生成版本号的方法1. 生成一个名为autover的项目 注意项目的Properties文件夹下有一个名为AssemblyInfo.cs的文件,autover程序的版本号就写在它里面。2. 创建模板文件 在windows的资源管理器中进入Properties文件夹,把AssemblyInfo.cs文件复制一份,命名为AssemblyInfo.
2014-12-30 11:07:44
2641
原创 工具——使用SVN进行项目版本管理
使用SVN进行项目版本管理1.摘要本文描述了利用SVN进行项目版本管理的方法,涉及项目版本号命名规则、SVN目录结构、第三方代码库的管理、版本创建、发布、修订、合并等行为的方法和原则。 2.版本号命名规则版本号采用主版本号.次版本号.修订号组成。版本的重大变化主版本号增1,次版本号和修订号归零。版本的相对较小的变化主版本号维持不变,次版本号增1,修订号归零。当一个版本发
2014-12-30 11:01:08
745
原创 工具——SVN常用命令说明
SVN是现在已经是进行团队开发合作的基本工具了,当然现在已经趋向使用git这样的分布式代码管理工具,现在先介绍下SVN的基本常用操作说明和基本命令基本功能解释:SVN取出[SVN checkout]:从档案库中取出工作复本。 汇出[Export]:从档案库中汇出干净的工作复本,不含svn管理用数据夹。 汇入[Import]:汇入目录至档案库。 SVN
2014-12-30 10:43:33
793
原创 工具——Source Insight常用设置
Source Insight常用设置:Source Insight是阅读和编写代码的好东东,基本上也算得上是经典之作了,虽然还有一点点小bug,不过对于C程序员来说可是一旦拥有别无所求。下列小技巧是在工作中同事整理总结的,对提高工作效率多少有点帮助,其中有些是对应于SVN的,没有使用SVN做版本管理的人就不要白费力气了。1、背景色选择 要改变背景色Option
2014-12-30 10:07:16
1603
转载 C++面试——C/C++ 基础之一
1.谈谈对C++内存分配的理解1.1 还是的先看看C++对内存分为哪几个区? 真正合理的C++的内存划分为栈区、堆区、全局区/静态区、字符串常量和代码区。 1、栈区(stack)——— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。想知道为什么效率高吗?因为关于栈的操作如push集成在处理器的指令集
2014-11-20 10:54:15
678
转载 RTSP简述
1 概述1.1 RTSP简介RTSP(Real Time Streaming Protocol), 实时流传输协议, 是TCP/IP协议体系中的一个应用层协议, 由哥伦比亚大学, 网景和RealNetworks公司提交的IETF RFC标准. 该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据. RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或RTP完成数
2014-11-18 10:54:36
544
转载 ffmpeg 各版本的简单说明
如果sh刚开始了解ffmpeg,我就简单介绍下,维基百科和百度百科没有的关于ffmpeg版本,截止2012-5-10.官方版本分支有6个:http://www.ffmpeg.org/download.html1.Freedom即0.10 from 0.8版:是最新的版本分支,接口迁移实现。2.Harmony即0.9 from 0.7版:接口迁移实现。3.Love即0.8 from
2014-08-26 17:26:58
12364
1
SI_Setting配置.rar
2014-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人