C/C++
文章平均质量分 78
Z_man
这个作者很懒,什么都没留下…
展开
-
core dump的生成与调试
在Linux下产生并调试core文件URL: http://blog.china-pub.com/more.asp?name=uniware&id=35478先看看我用的是个什么机器:$ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT 2004 i686 i686 i38转载 2010-05-14 09:50:00 · 615 阅读 · 0 评论 -
C++解析XML
C++解析XMLhttp://www.cppblog.com/alantop/archive/2006/05/17/7303.htmlHomepage: http://www.grinninglizard.com/tinyxml/download:http://sourceforge.net/projects/tinyxml用mingw3转载 2010-01-07 16:12:00 · 355 阅读 · 0 评论 -
glib学习笔记5 使用perl正则表达式
转载请注明出处,或联系fanyuanmail@126.com用过perl,python,shell的人在使用c语言的字符串时都会觉得c语言字符串的处理太麻烦了。很多程序测试题都会考一些字符串匹配的题。 glib提供了一套非常好的正则表达式api,程序可以非常简单的使用c语言来做字符串的匹配。 比如一个文件 test_regex.txt11aa222bb33333cccc转载 2010-01-07 16:09:00 · 358 阅读 · 0 评论 -
glib 学习笔记4,解析xml文件
转载请注明出处,或联系 fanyuanmail@126.comxml的用处越来越广泛了,解析xml得库也非常多,总的来说分为两种,一种是把xml当作一个“树”来进行解析,一种是基于事件类型的 glib就是使用事件类型解析xml。有5种不同的事件类型1)一个element的开始2)一个element的结束3)element得文本4)一些stuff5) 错误转载 2010-01-07 16:08:00 · 1197 阅读 · 0 评论 -
glib学习笔记3 命令行解析
转载请注明出处,或联系:fanyuanmail@126.com传统的命令行解析,如果提供的参数很多,程序很不灵活,并且很容易出问题while(getopt()){swtich() { case: case: case: }}比如实现下面这个参数,实现起来还是非常麻烦的。转载 2010-01-07 16:08:00 · 571 阅读 · 0 评论 -
glib学习笔记2 使用glib链表
glib学习笔记 2使用glib提供的链表转载请注明出处,或联系 fanyuanmail@126.com在写程序中经常会用到一些对链表的操作,很多时候自己维护一套函数。其实在glib中有一个现成的list可以使用Doubly-LinkedLists - linked lists containing integer values or pointers to data,wi原创 2010-01-07 16:06:00 · 653 阅读 · 0 评论 -
glib 学习笔记1,读取程序配置文件
glib 学习笔记,读取程序配置文件转载请联系作者:fanyuanmail@126.com有时在写一个程序时经常会从一个配置文件中读取一系列的参数,在度bluez代码时发现了一个非常好的方法。这个方法基于glib-2.0,例如要从名为main.conf中读取里面的配置值。offmode = NoScanpagetimeout = 8192age = 26 1 [G转载 2010-01-07 16:05:00 · 780 阅读 · 0 评论 -
Glib 使用说明 & 学习笔记
Glib是一种底层库,创建 GDK 和 GTK应用程序时该库可提供许多有用的定义和函数。它们包括基本类型及限制的定义、标准宏、类型转换、字节序、存储分配、警告和断言、消息记录、计时器、字符串工具 (string utilities)、挂钩 (hook)函数、一个句法扫描器、动态加载模块和自动字符串补全,它也定义了许多数据结构(及其相应的操作),包括存储块、双向链表、单向链表、哈希表转载 2010-01-07 16:03:00 · 1485 阅读 · 0 评论 -
Glib(1)
GLib1.1 Introduction在开源世界中,G中很常见的。 它代表了GNU ("GNUs Not Unix")。 像GTK+,GLib,GObject,以及GNOME,还有一些其它的软件包,如Ghostscript和gcc中都充满了G。为了理解后面的章节,你必须学习一些GLib的基础知识(libglib-2.0)。它为GTK+和GNOME程序提供了基础的数据结构和实用函转载 2010-01-07 15:59:00 · 567 阅读 · 0 评论 -
C语言函数入栈顺序与可变参数函数
C/C++函数调用约定与函数名称修饰规则探讨 使用C/C++语言开发软件的程序员经常碰到这样的问题:有时候是程序编译没有 问题,但是链接的时候总是报告函数不存在(经典的LNK2001错误),有时候是程序编译和链接都没有错误,但是只要调用库中的函数就会出现堆栈异常。这些现象通常是出现在C和C++的代码混合使用的情况下或在C++程序中使用第三方的库的情况下(不是用C++语言开发的),其转载 2010-03-01 15:41:00 · 302 阅读 · 0 评论 -
Byte and Bit Order Dissection(解析字节序和比特序)
作者:Kevin He,2003-09-02 原文地址:http://www.linuxjournal.com/article/6788 译者:Love. Katherine,2007-04-14译文地址:http://blog.csdn.net/lovekatherine/archi原创 2010-03-03 10:24:00 · 587 阅读 · 0 评论 -
C语言中关键字auto、static、register、const、volatile、extern的作用
1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。 (3)static 常见的两种用途:转载 2010-03-01 16:19:00 · 579 阅读 · 0 评论 -
嵌入式实时程序设计C/C++代码优化
1 引言计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用。嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体。具有软件代码小、高度自动化、响应速度快等特点。特别适合于要求实时和多任务的应用体系。嵌入式实时系统是目前蓬勃发展的行业之一。但是,实时嵌入式系统的特点使得其软转载 2010-01-07 16:13:00 · 297 阅读 · 0 评论 -
编写高效c语言的四大绝招
编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就是针对编程工作中的一些体会和经验做相关的阐述。 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。比如说字符串的赋值: 方法A:通常的办法#define转载 2010-01-07 16:14:00 · 346 阅读 · 0 评论 -
C程序内存分配
在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是有限的。因此在程序设计中,有效地管理内存资源是程序员首先考虑的问题。第1节主要介绍内存管理基本概念,重点介绍C程序中内存的分配,以及C语言编译后的可执行程序的存储结构和运行结构,同时还介绍了堆空间和栈空间的用途及区别。第2节主要介绍C语言中内存分配及释放函数、函数的功能,以及如何调用这些转载 2010-05-13 11:42:00 · 765 阅读 · 0 评论 -
关于自加++,左值的问题
先给出结论:i++ = 5; 错++i = 5; 对原因为何:i++的运算结果并不是i这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算: i++=5; 甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误 。左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。 a =转载 2010-05-07 17:18:00 · 346 阅读 · 0 评论 -
C语言编译过程总结详解(转)
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。转载 2010-05-07 17:28:00 · 563 阅读 · 0 评论 -
C语言宏的高级应用
关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warning: " #EX转载 2010-05-07 17:20:00 · 551 阅读 · 0 评论 -
自加 左值
1.前置运算符和后置运算符,左值和右值。其实很久以来一直都没有怎么搞清楚左值和右值的区别,只知道左值可以放在等号的左边,也可以放在等号的右边,但是右值却只能放在等号的右边,然后形成一个大概直观的印象,知道怎么样做才不出错而已。不过今天看看C++,却发现有了点新的体会。对于表达式a--=5;这样一个表达式,明显是错误的,究其原因,是因为执行等号左边的自减表达式之后,显示取得a的值,然后才转载 2010-05-07 17:19:00 · 412 阅读 · 0 评论 -
对象文件格式分析工具: objdump, nm,ar
<br />前言<br />如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar。当然,本文不可能非常详细的说明它们的使用方法和功能。如果你觉得本文不够清楚,你可以使用:man. 我的计划只是想让更多的人了解这些工具,以后在今后 的编程过程中能有所帮助。<br /><br /><br />操作系统: Linux<br /><br />开始库文件操作命令:ar ----非常转载 2010-06-25 14:57:00 · 596 阅读 · 0 评论 -
C/C++中的函数参数传递机制
一、 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主转载 2010-04-30 15:23:00 · 239 阅读 · 0 评论 -
代码命名规则---部分编程常用单词缩写
规则:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。 完整单词缩写A averageavgB backbkbackgroundbgbreakbrk转载 2010-05-04 11:25:00 · 567 阅读 · 0 评论 -
C优先级列表
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember ac转载 2010-03-24 16:33:00 · 312 阅读 · 0 评论 -
Select函数实现原理分析
select需要驱动程序的支持,驱动程序实现fops内的poll函数。select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用(如可读或写),如果有的话则返回可用资源的文件描述符个数,没有的话则睡眠,等待有资源变为可用时再被唤醒继续执行。 下面我们分两个过程来分析select:转载 2010-01-07 16:20:00 · 322 阅读 · 0 评论 -
『C/C++面试题大汇总』
想成为嵌入式程序员应知道的0x10个基本问题:预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #de转载 2010-01-07 16:15:00 · 383 阅读 · 0 评论 -
C/C++函数调用时的堆栈变化
深入学习的引起:csdn论坛某诡异问题 转抄如下: view plaincopy to clipboardprint?class Test { public: int i; int j; }; int crashme(转载 2010-03-01 15:43:00 · 723 阅读 · 0 评论 -
堆与栈的区别
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态转载 2010-03-01 15:45:00 · 380 阅读 · 0 评论 -
回调函数的概念及其使用
1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客转载 2009-06-26 16:05:00 · 641 阅读 · 0 评论 -
C语言常用排序(2)
/*================================================ 功能:快速排序 输入:数组名称(也就是数组首地址)、数组中起止元素的下标================================================*//*===============================================转载 2009-06-26 10:34:00 · 397 阅读 · 0 评论 -
模块参数使用示例
#include #include /* Optional, to include module_param() macros */#include /* Optional, to include prink() prototype */#include /* Optional, to include module_init() macros */#转载 2009-05-26 18:03:00 · 444 阅读 · 0 评论 -
Linux下syslog日志函数使用
转载 2009-04-01 11:23:00 · 340 阅读 · 0 评论 -
红黑树的实现源码(C语言版)
不多说啥了,这里不讲理论, 需要的可以自己去看书(如算法导论等), 就给出一份实现代码, 供有需要的人参考之用, 前后写了好久, 参考的是linux内核中红黑树的实现代码:http://lxr.linux.no/linux/lib/rbtree.c实现的操作有:插入, 查找, 删除./*----------------------------------------------转载 2008-12-16 13:09:00 · 398 阅读 · 0 评论 -
原创 与php md5算法完全一致的C语言版 王泽宾收藏
看到很多同学搜寻md5算法,我特意根据php的md5算法写了一个c语言版本,如果大家感兴趣,可以尽情的使用,通过本算法生成的md5摘要,与php的md5函数的结果完全相同。 /*** MD5制作函数,兼容PHP* @author wangzebin */#include #include #include #include /* * Convert an array of li转载 2009-02-26 10:06:00 · 367 阅读 · 0 评论 -
函数可重入性及编写规范
一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。2)可重转载 2008-12-01 14:04:00 · 266 阅读 · 0 评论 -
使用可重入函数进行更安全的信号处理
如果要对函数进行并发访问,不管是通过线程还是通过进程,您都可能会遇到函数不可重入所导致的问题。在本文中,通过示例代码了解如果可重入性不能得到保证会产生何种异常,尤其要注意信号。引入了五条可取的编程经验,并对提出的编译器模型进行了讨论,在这个模型中,可重入性由编译器前端处理。 在早期的编程中,不可重入性对程序员并不构成威胁;函数不会有并发访问,也没有中断。在很多较老的 C转载 2008-12-01 14:03:00 · 310 阅读 · 0 评论 -
zlib
在www.zlib.net 得到资料.自己整理了下,翻译了一部分. 整理成两部分,第一部分是提炼出来的函数列表.第二部分是原来的使用手册+自己翻译的.是用来自己用的.如果能给别人带来方便,也是意外的惊喜阿 .哈哈.------------------------------------------------ First Part -------------------------------原创 2008-11-27 10:26:00 · 1465 阅读 · 0 评论 -
mbtowc
Run-Time Library Reference mbtowc, _mbtowc_l Convert a multibyte character to a corresponding wide character. int mbtowc( wchar_t *wchar,原创 2008-11-27 10:17:00 · 1035 阅读 · 0 评论 -
Linux c程序中获取shelll脚本输出
Table of Contents1. 前言2. 使用临时文件3. 使用匿名管道4. 使用popen5. 小结1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用转载 2008-11-07 16:58:00 · 619 阅读 · 0 评论 -
C语言常用排序(1)
1、稳定排序和非稳定排序 简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。 比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,a2,转载 2009-06-26 10:31:00 · 282 阅读 · 0 评论 -
位操作技巧实例大全
检测一个无符号数是不为2^n-1(^为幂): x&(x+1)将最右侧0位改为1位: x | (x+1)二进制补码运算公式:-x = ~x + 1 = ~(x-1)~x = -x-1-(~x) = x+1~(-x) = x-1x+y = x - ~y - 1 = (x|y)+(x&y)x-y = x + ~y + 1 = (x|~y)-(~x&y)x^y转载 2009-06-26 11:12:00 · 319 阅读 · 0 评论