随笔分类 -  c语言

什么是posix
摘要:在网上查到对于posix的介绍,来自《Linux内核设计与实现(第2版)》的第5章,就这部分来看,这本书估计不错。一般情况下,应用程序通过应用编程接口(API)而不是直接通过系统调用来编程。这点很重要,因为应用程序使用的这种编程接口实际上并不需要和内核 提供的系统调用对应。一个API定义了一组应用程序使用的编程接口。它们可以实现成一个系统调用,也可以通过调用多个系统调用来实现,而完全不使用任何系 统调用也不存在问题。实际上,API可以在各种不同的操作系统上实现,给应用程序提供完全相同的接口,而它们本身在这些系统上的实现却可能迥异。在Unix世界中,最流行的应用编程接口是基于POSIX标准的。. 阅读全文

posted @ 2013-07-29 15:15 weiweishuo 阅读(8976) 评论(0) 推荐(3)

gcc的优化相关
摘要:1,gcc默认优化级别是-O0,此级别下生成的汇编代码和c语句之间有较强的对应关系,利于分析程序:例如这段程序:1 void main(){2 int a=16;3 float b=(float)a;4 }gcc -o tt tt.c -gmain桢对应: 0x080483dc <+0>: push ebp 0x080483dd <+1>: mov ebp,esp 0x080483df <+3>: sub esp,0x10=> 0x080483e2 <+6>: mov DWORD PTR [ebp-0x8],0x10 ... 阅读全文

posted @ 2013-03-09 10:40 weiweishuo 阅读(265) 评论(0) 推荐(0)

浮点数的二进制表示【转载】
摘要:关于浮点数在计算机内部的存储机制,网上搜了不少文章,这篇是讲的最清晰的了...----------------------------------------------------------------------------------------------------------------1.前几天,我在读一本C语言教材,有一道例题: #include <stdio.h> void main(void){ int num=9; /* num是整型变量,设为9 */ float* pFloat=&num; /* pFloat表示num的内存地址,但是设为浮点数 * 阅读全文

posted @ 2012-12-03 15:54 weiweishuo 阅读(264) 评论(0) 推荐(0)

c输入函数细节
摘要:1,输入函数被调用后,它首先检查输入缓冲区内的字符数量是否已满足输入要求,若满足,则直接从缓冲区读入;若缓冲区内的字符数量不满足输入要求,则等待用户输入。通常输入完成的标志是用户输入回车\n,这时输入函数会重复之前的步骤——检查输入缓冲区的字符数量是否满足输入要求,若满足...若不满足...看例子:... 阅读全文

posted @ 2012-12-02 16:47 weiweishuo 阅读(167) 评论(0) 推荐(0)

linux c语言用intel语法反汇编【转载】
摘要:http://topic.csdn.net/u/20081206/00/ba2ac6fe-a3c6-4e40-829d-dc6472e5e3a7.html要用到objdump命令的相应参数:objdump -d -mi386:x86-64:intel ./t.so 就可以将当前目录下的t.so文件按intel语法反汇编了,下面是参数详细说明-----------------------------------------------------------------------------------------------------------------------------The 阅读全文

posted @ 2012-10-13 12:11 weiweishuo 阅读(432) 评论(0) 推荐(0)

静态库
摘要:http://www.eefocus.com/article/09-11/85659s.html?clear=t有时候需要把一组代码编译成一个库,这个库在很多项目中都要用到,例如libc就是这样一个库,我们在不同的程序中都会用到libc中的库函数(例如printf),也会用到libc中的变量(例如以后要讲到的environ变量)。本节介绍怎么创建这样一个库。我们继续用stack.c的例子。为了便于理解,我们把stack.c拆成四个程序文件(虽然实际上没太大必要),把main.c改得简单一些,头文件stack.h不变,本节用到的代码如下所示:这些文件的目录结构是: .我们把stack.c、pus 阅读全文

posted @ 2012-10-02 18:38 weiweishuo 阅读(254) 评论(0) 推荐(0)

tips for C
摘要:1,如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。2,ld链接静态库时一定要先-o,再-l。因为此时ld不再像链接动态库时那样能自动调整依赖顺序。3,printf("%f",1/2);输出是0.5么,不,输出0。想输出0.5,这样写,printf("%f",(doublle)1/(double)/2);这应是c语言把数值常量默认为int类型的缘故,int类型运算,结果0.5取整自然是0了。4,C99标准的规定,'a'叫做整型字符常量(integercharacterconstant),被看成是int型,所以在3 阅读全文

posted @ 2012-10-01 08:29 weiweishuo 阅读(163) 评论(0) 推荐(0)

void*指针的由来
摘要:【转载】http://blog.csdn.net/mhjcumt/article/details/7355127int a=1;int *p = &a;float *p1 = (float*)p;则p和p1的值都是&a,但是*p是将&a地址中的值按照int型变量进行解释,而*p1则是将&a地址中的值按照float型变量进行解释。鉴于指针之间这种灵活的强制类型转换的需求和出于简化代码的考虑,ANSI C引入了空指针即void*。void指针又名万能指针,在现在的很多程序中,当参数不确定时就用万能指针代替,这一类的指针在线程\进程函数里特别常见。ANSI C规定,v 阅读全文

posted @ 2012-10-01 08:23 weiweishuo 阅读(229) 评论(0) 推荐(0)

printf输出格式
摘要:来自:点击打开链接printf输出格式 收藏 格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE %-5S A#### ABC## ABCDEFGH Printf 格式化字符串格式代码 1 -12 12345 123456789 %d 1 -12 12345 123456789 %6d #####1 ###-12 #12345 123456789 %.4d 0001 -0012 12345 123456789 %6.4d ##0001 #. 阅读全文

posted @ 2012-09-26 18:46 weiweishuo 阅读(234) 评论(0) 推荐(0)

printf使用变量作为输出精度
摘要:例如: int n=2; int i=1.123; printf("%.*f",n,i); *号的位置会由n来填充。 输出结果就是1.12 据我测试,fscanf不支持变量精度的。 阅读全文

posted @ 2012-09-26 18:26 weiweishuo 阅读(234) 评论(0) 推荐(0)

导航