上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 90 下一页
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 定时器是我们需要经常处理的一种资源。那linux下面的定时器又是怎么一回事呢?其实,在linux里面有一种进程中信息传递的方法,那就是信号。这里的定时器就相当于系统每隔一段时间给进程发一个定时信号,我们所要做的就是定义一个信号处理函数。[cpp] view plaincopy#include<stdio.h>#include<time.h>#include<sys/time.h>#include<stdlib.h>#include<sig 阅读全文
posted @ 2012-01-18 12:19 董雨 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在我们编写软件的过程当中,少不了需要使用别人的库函数。因为大家知道,软件是一个协作的工程。作为个人来讲,你不可能一个人完成所有的工作。另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把时间浪费在这些重复的工作上面。 既然说到了库函数,那么一般来说库函数分为两种方式:静态库和动态库。两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到 最后的执行文件中的。怎么理解呢?也就是说,对于最后的执行文件而言,你是否删除静态库无所谓。但是,一旦你删除了动态库... 阅读全文
posted @ 2012-01-18 12:18 董雨 阅读(223) 评论(1) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 动态链接库不是linux独有的特性,在windows下面也存在这样的特性。一般来说,windows下面的动态连接库是以*.dll作为结尾的,而 linux下面的动态连接库是以*.so结尾的。和静态链接库相比,动态连接库可以共享内存资源,这样可以减少内存消耗。另外,动态连接是需要经过操作系 统加载器的帮助才能被普通执行文件发现的,所以动态连接库可以减少链接的次数。有了这个特点,我们就不难发现为什么很多软件的补丁其实都是以动态库发布 的。 那么,在Linux上动态库是怎么生成的呢?[cpp... 阅读全文
posted @ 2012-01-18 12:18 董雨 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 编写代码过程中少不了调试。在windows下面,我们有visual studio工具。在linux下面呢,实际上除了gdb工具之外,你没有别的选择。那么,怎么用gdb进行调试呢?我们可以一步一步来试试看。[cpp] view plaincopy#include<stdio.h>intiterate(intvalue){if(1==value)return1;returniterate(value-1)+value;}intmain(){printf("%d\n" 阅读全文
posted @ 2012-01-18 12:17 董雨 阅读(247) 评论(1) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 同样是x86的cpu,但是却可以用不同形式的汇编语言来表示。在window上面我们使用的更多是intel格式的汇编语言,而在Linux系统上面使 用的更多的常常是AT&T格式的汇编语言。那什么是AT&T格式的汇编代码呢?我们可以写一个试试看。[cpp] view plaincopy.datamessage:.string"hello!\n"length=.-message.text.global_start_start:movl$length,%edxmo 阅读全文
posted @ 2012-01-18 12:17 董雨 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 对于程序设计员来说,makefile是我们绕不过去的一个坎。可能对于习惯Visual C++的用户来说,是否会编写makefile无所谓。毕竟工具本身已经帮我们做好了全部的编译流程。但是在Linux上面,一切变得不一样了,没有人会 为你做这一切。编代码要靠你,测试要靠你,最后自动化编译设计也要靠你自己。想想看,如果你下载了一个开源软件,却因为自动化编译失败,那将会在很大程度 上打击你学习代码的自信心了。所以,我的理解是这样的。我们要学会编写makefile,至少会编写最简单的makef... 阅读全文
posted @ 2012-01-18 12:14 董雨 阅读(256) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/feixiaoxing/article/details/7194756#comments【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。当 然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用C语言编写过完整的程序,那么只能说他 对C语言本身的理解还相关肤浅,对系统本身的认识也不够到位。作为程序员来说,lin... 阅读全文
posted @ 2012-01-18 12:13 董雨 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在算术符重载里面,“=”重载可能是最经常使用的一种。但是好多人就误以为在函数中,凡是类出现“=”的地方,那就是调用算术符重载,其实不然。为什么呢?我们可以看看下面的代码。首先,我们定义一个基本类:[cpp] view plaincopyclassdata{char*value;intnumber;public:explicitdata(intnum=0){if(num){number=num;value=(char*)malloc(num);}}data(constdata&d){n 阅读全文
posted @ 2012-01-18 11:16 董雨 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 指针是编程人员的梦魇,对C语言的开发者是如此,对C++的开发者也是如此。特别是在C++中,如果不注意处理类中的指针,非常容易出问题。如果朋友们不相信可以看看下面的代码:[cpp] view plaincopyclassdata{int*value;public:data(intnum){if(num>0)value=(int*)malloc(sizeof(int)*num);}~data(){if(value)free(value);}};voidprocess(){datam(10) 阅读全文
posted @ 2012-01-18 11:15 董雨 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 泛型编程其实不难。本质上说,泛型编程就是让通用的算法应用到所有的数据类型。具体来说,int是我们熟悉的整数类型。那么一般情况下,如果我们写一个int整数的排序算法,应该怎么写呢?大家可以自己试试?下面的代码是我的一个范例;[cpp] view plaincopyvoidbubble_sort(intarray[],intlength){inttemp=0;intouter=0;intinner=0;assert(NULL!=array&&0!=length);for(oute 阅读全文
posted @ 2012-01-18 11:14 董雨 阅读(189) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 90 下一页