
Linux c/c++
chenbang110
学习是最快乐的事
展开
-
优先级反转
优先级翻转发生的条件: 1、首先发生翻转需要有三个任务,它们的优先级分别是高、中、低。 2、低优先级和高优先级都需要take同一个信号量。 优先级翻转的过程: 1、低优先级先take到信号量。 2、低优先级被中优先级任务抢占。(然后低优先级任务就只能等中优先级任务执行完,再继续执行之后,才能释放信号量了) 3、高优先级需要tak转载 2013-10-23 21:02:35 · 1049 阅读 · 0 评论 -
Linux 的多线程编程的高效开发经验
http://blog.chinaunix.net/uid-25652733-id-2953728.htmlLinux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别。不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断。本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经转载 2013-01-24 22:22:07 · 652 阅读 · 0 评论 -
12个有趣的C语言面试题
摘要:12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer转载 2012-11-21 08:57:07 · 712 阅读 · 0 评论 -
螺旋矩阵编程实现
今天看到google的一道面试题为输出如下的矩阵(输入为方阵的行数N)A[]=1 16 15 14 132 17 24 23 123 18 25 22 114 19 20 21 105原创 2012-10-26 00:15:59 · 3077 阅读 · 2 评论 -
数据结构实验指导
数据结构实验指导实验一:线性表的操作实验一A:线性表的顺序存储结构操作【题目】设顺序表Va中的数据元素递增有序,试写一算法,将x插入到顺序表的适当位置上,以保证该表的有序性。【实验目的】掌握用动态数组实现线性表的顺序存储结构及顺序表的初始化、查找、插入操作。【分析】本程序设计方法:先根据插入结点x的值查找插入位置,然后从表尾到插入位置转载 2012-10-24 09:28:54 · 1300 阅读 · 0 评论 -
static void
用static声明局部变量,使其变为静态存储方式,作用域不变;用static声明外部变量,其本身就是静态变量,这只会改变其连接方式,使其只在本文件内部有效,而其他文件不可连接或引用该变量。 static作用于函数:e.g.: static void func(void); 使用static用于函数定义时,对函数的连接方式产生影响,使得函数只在本文件内部有效,对其他文件是不可见的原创 2012-10-23 13:26:12 · 8171 阅读 · 0 评论 -
低极错误!!!两个数的交换。
默哀一分钟!!!过程如下:修改后:原创 2012-10-22 16:33:14 · 755 阅读 · 0 评论 -
C++中的内存数据对齐
内存对齐的原因:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。zz:bigwhite.blogbus.com/logs/134730转载 2012-10-22 13:13:56 · 687 阅读 · 0 评论 -
Linux下automake软件编译与发布之多级目录结构的处理
在入门篇我们简单介绍了使用automake自动产生makefile的几个关键步骤,所有文件都在同一个目录下。但在比较大的项目中,很少将所有文件放在一个目录下的。本文针对这种情况做个简单介绍。 多级目录结构的软件,一般是单个程序、库文件或模块放在各自的目录中。automake要求每个目录都有自己的Makefile.am文件来编译各自目录 下的代码。在顶级的目录中,有一个Make转载 2012-10-20 14:44:43 · 586 阅读 · 0 评论 -
Linux Makefile自动编译和链接使用的环境
想知道到Linux Makefile系统的真相么,想知道Linux Makefile系统中藏有的内在奥义么,只有我来给大家全面讲解介绍Linux Makefile系统作为Linux下的程序开发人员,大家一定都遇到过Linux Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Linux Makefile,如果要想写出一个符合自由软件惯例的Linux转载 2012-10-20 10:55:09 · 1001 阅读 · 0 评论 -
sizeof详解
0. 前向声明sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。但当我总结的时候才发现,这个问题既可以简单,又可以复杂,所以本文有的地方并不适合初学者,甚至都没有必要大作文章。但如果你想“知其然,更知其所以然”的话,那么这篇文章对你或许有所帮助。菜鸟我对C++的掌握尚未深入,转载 2012-10-20 10:41:01 · 770 阅读 · 0 评论 -
给出任意一个日期, 怎样知道是星期几?
给出任意一个日期, 怎样知道是星期几? 下面给出的技巧太高超了!真不知道作者是怎么想到的。由 Tomohiko Sakamoto 提供的优雅的代码: int dayofweek(int y, int m, int d) /* 0 = Sunday */ { static int t[] = {0, 3, 2, 5, 0, 3, 5,转载 2013-01-17 11:10:02 · 1011 阅读 · 0 评论 -
BSS段、数据段、代码段、堆与栈
http://www.embeddedlinux.org.cn/html/xinshourumen/200909/28-661.htmlBSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(data segment)通常是指用来存放程转载 2013-02-27 20:30:49 · 537 阅读 · 0 评论 -
gcc -I -L -l区别
gcc -I -L -l区别我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例:gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld上面这句表示在编译hello.c时转载 2013-04-01 09:34:57 · 618 阅读 · 0 评论 -
c语言 #define 中的UL
c语言 #define 中的ULU和L是 整数文字量的后缀修饰,用于显示指明整数文字量的类型为unsigned int(U)和long int(L)。 类似的还有浮点数文字量的后缀修饰F或f,用于指明文字量表示的是一个float,而不是默认情况下的double。经常发现一些C语言中通过#define 定义的数据中包含有UL符号,不理解为什么,把他去掉发现也没有什么区别。现在转载 2013-09-13 15:50:34 · 1209 阅读 · 0 评论 -
printf("%*.*s/n",m,n,ch);
ch = "123456780123"; int n = 2,m = 10; //*.* ,前边的*定义的是总的宽度,后边的定义的是输出的个数。 //如果后边的比前边的小,则使用空格在左侧补够m位。 printf("%*.*s/n",m,n,ch);//这里输出“ 12”原创 2013-08-27 19:10:31 · 1437 阅读 · 1 评论 -
C内存对齐
http://blog.csdn.net/hbuxiaofei/article/details/9491953当你看到这个标题,仍想往下读的时候说明你已经开始关注数据在内存存储问题了。好吧,下面先想一个问题:struct stu{char sex;int length;char name[10];};sizeof (struct stu) = ?转载 2013-08-10 09:20:16 · 770 阅读 · 0 评论 -
c语言 优先级
恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右 ()圆括号转载 2013-07-04 17:05:11 · 644 阅读 · 0 评论 -
for(;;)与while(1)的效率分析
这几天看到好友的文章关于while(1)和for(;;)效率的讨论,手痒说了两句。回头一寻思,自己也只是推断。没有做任何实验,我们就看看这两种写法到底有什么区别:实验环境:IAR EWARM 5.2我就随便在一个嵌入式项目上做文章了,首先工程C语言编译优化选择了None, 输出选择带汇编输出,输出的汇编文件和C语言对应上。转载 2013-06-29 09:58:10 · 1133 阅读 · 0 评论 -
(++i) + (++i) + (++i) + (++i)
输出:i=1; (++i) + (++i) + (++i) + (++i) = 3 + 3 + 4 + 5 = 15前两个自增统一取值,后面依次自增立刻取值。(i++) + (i++) + (i++) = 3后缀的,统一取值,再自增。原创 2013-06-27 23:09:12 · 1295 阅读 · 2 评论 -
VC++环境下连续自增(自减)运算规则 i++ ++i
VC++环境下连续自增(自减)运算规则1、 在一般表达式中和在函数参数中计算的结果相同(这一点与Turbo C环境不同);2、 后缀:同表达式中Turbo C的情况相同:先统一取值后依次自增,如:int a,i=5; a=i+++i+++i++; a=15, i=8.3、 前缀:对整型,前两个自增同Turbo C,即依次自增后统一取值,后原创 2013-06-27 23:24:55 · 3236 阅读 · 0 评论 -
C语言命名注意事项
1. 注意区分风格,Windows风格首字母大写,如AddWord;Linux风格,小字加下划线,如add_word。2. 不要仅靠大小写来区别命名,如int a, A;3. 尽量避免出现数字编号。4. 变量以小写字母开头,函数以大写字母开头。5. 宏定义的常量全用大写字母加下划线。6. 静态变量前加s_,全局变量前加g_,类成员前加m_原创 2013-06-27 09:10:37 · 1301 阅读 · 0 评论 -
linux 中解析命令行参数 (getopt_long用法)
getopt_long支持长选项的命令行解析,使用man getopt_long,得到其声明如下: #include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option转载 2013-04-07 08:45:41 · 598 阅读 · 0 评论 -
一道试题引发的血案
某日,看到一道比较恶心的C语言的试题,考了很多比较绕的知识点,嘴脸如下:int main(void){ int a[4] = {1, 2, 3, 4}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1); printf("%x, %x/n", ptr1[-1], *p转载 2012-09-05 21:36:30 · 1127 阅读 · 0 评论 -
c/c++中的-->运算符
参考What is the name of this operator: “–>”?c/c++中以下代码是合法的:#include int main(){ int x = 10; while( x --> 0 ) // x goes to 0 { printf("%d ", x); }}-->是一个合法的操转载 2012-09-05 20:53:01 · 867 阅读 · 0 评论 -
extern与static用法
在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能转载 2012-08-29 11:02:53 · 695 阅读 · 0 评论 -
strcmp,stricmp,strcmpi,strncmp,strnicmp,strncmpi,strcat,strncat比较
strcmp原型:int strcmp(char *s1,char * s2);功能:比较字符串s1和s2。说明:当s1当s1=s2时,返回值=0当s1>s2时,返回值>0举例:char *s1="Hello, Programmers!";char *s2="Hello, programmers!";r=strcmp(s1,s2); //r小于0, 参见as转载 2012-07-11 18:59:17 · 5479 阅读 · 0 评论 -
linux下的C语言开发(动态库)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 动态链接库不是linux独有的特性,在windows下面也存在这样的特性。一般来说,windows下面的动态连接库是以*.dll作为结尾的,而linux下面的动态连接库是以*.so结尾的。和静态链接库相比,动态连接库可以共享内存资源,这样可以减少内存消耗。另外,动态连接是需要转载 2012-07-11 16:14:37 · 663 阅读 · 0 评论 -
linux下的C语言开发(静态库)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在我们编写软件的过程当中,少不了需要使用别人的库函数。因为大家知道,软件是一个协作的工程。作为个人来讲,你不可能一个人完成所有的工作。另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把时间浪费在这些重复的工作上面。 既然说到了库函数,那么一般来说库转载 2012-07-11 16:11:10 · 429 阅读 · 0 评论 -
linux下的C语言开发(开篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。当然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用C语言编写过完整的程序,那么只能说他对C转载 2012-07-11 16:04:24 · 466 阅读 · 0 评论 -
变长参数列表函数
可变参数列表头文件提供了遍历未知数目和类型的函数参数表的功能。该头文件的实现因不同的机器而不同,但提供的接口是一致的。假定函数 f 带有可变数目的实际参数,lastarg 是它的最后一个命名的形式参数(参数列表必须至少包括一个命名参数)。那么,在函数 f 内声明一个类型为 va_list 的变量 ap (argument pointer),它将依次指向每个实际参数。转载 2012-06-06 08:40:39 · 517 阅读 · 0 评论 -
c/c++资源(源码、开发工具、开发库)
http://blog.csdn.net/cnsword/article/details/4176636开发工具:VIM 骨灰级玩家专属emacs 骨灰级玩家专属code::blocks 入门级推荐codelite 入门级首选eclipse+CDT 如果你经常用eclipse就直接装个cdt的插件吧netbeans 习惯netbeans的首选anjuta转载 2012-06-06 09:53:08 · 1034 阅读 · 0 评论 -
C++编程必备
C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建议,以进一步加强这方面的清单。 1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、htt转载 2012-06-06 09:51:38 · 644 阅读 · 0 评论 -
嵌入式volatile关键字
今天在看S3C2440开发板的初始化代码时,对#define A (* (volatile unsigned long *) 0x48000000这种形式的定义方式有困惑,于是求助GOOGLE大神,在网上搜到了一些文章,觉得以下三篇文章对理解这个有些作用:文章一:对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的。如果系统结构支持独立的IO地址空间,并且是端口映射,就必须转载 2012-05-15 23:00:51 · 681 阅读 · 0 评论 -
Linux C函数库参考
asctime(将时间和日期以字符串格式表示)clock(取得进程占用CPU的大约时间)ctime(将时间和日期以字符串格式表示)difftime(计算时间差距)ftime(取得目前的时间和日期)gettimeofday(取得目前的时间)gmtime(取得目前的时间和日期)localtime(取得当地目前的时间和日期)mktime(将时间结构数据转换成经过的秒数)转载 2012-05-11 09:26:51 · 769 阅读 · 0 评论 -
C++的类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast
在C++中,存在类型转换,通常意味着存在缺陷(并非绝对)。所以,对于类型转换,有如下几个原则:(1)尽量避免类型转换,包括隐式的类型转换(2)如果需要类型转换,尽量使用显式的类型转换,在编译期间转换(3)避免使用reinterpret_cast和老式的强制类型转换操作符通常,隐式的类型转换会导致警告,需要重视这些警告,并使用显式的类型转换代替,例如static_cast代替一些算术转载 2012-04-21 22:24:20 · 586 阅读 · 0 评论 -
一个关于fork的面试题
前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“_”?#include #include #include int main(void){ int i; for(i=0; i<2; i++){ fo转载 2012-08-01 14:51:19 · 655 阅读 · 0 评论 -
C语言的谜题
这几天,本站推出了几篇关于C语言的很多文章如下所示:语言的歧义 [酷壳链接] [CSDN链接]谁说C语言很简单? [酷壳链接] [CSDN链接]6个变态的C语言Hello World程序 [酷壳链接] [CSDN链接]如何加密/弄乱C源代码 [酷壳链接] [CSDN链接]C语言的谜题 [酷壳链接] [CSDN链接]我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大转载 2012-08-02 23:20:36 · 648 阅读 · 0 评论 -
framebuffer显示JPEG图片
#include #include #include #include #include #include #include #include #include #include #define FB_DEV "/dev/fb0"/***************** function declaration *********转载 2012-07-20 09:57:42 · 863 阅读 · 0 评论 -
C语言中内存堆和栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们转载 2012-07-31 08:05:21 · 1120 阅读 · 0 评论