C语言
GNU之歌
这个作者很懒,什么都没留下…
展开
-
wait 系统函数
The wait() system call suspends execution of the calling process until one of its children terminates. The call wait(&status) is equivalent to:原创 2020-01-22 10:46:32 · 229 阅读 · 0 评论 -
关于C语言中的结构体对齐问题
1,比如: struct{ short a1; short a2; short a3; }A; struct{ long a1; short a2; }B; sizeof( A)=6, sizeof( B)=8,为什么?注:sizeof(short)=2,sizeof(long)=4 因为:“成员对齐有一个重要的条件,即每个成员按自己的方式对齐.其对齐的规则是,每个成员按其类型的对齐参数(通常是这转载 2010-01-27 18:07:00 · 416 阅读 · 0 评论 -
将整数的二进制表示转浮点数的二进制表示
将整数的二进制表示转浮点数的二进制表示 已知:整数3490593(16进制表示为0x354321)。求:其对应的浮点数3490593.0的二进制表示。 解法如下:先求出整数3490593的二进制表示: H: 3 5 4 3 2 1 B: 00原创 2010-01-27 18:09:00 · 839 阅读 · 0 评论 -
出来了一年多,感慨一下
<br />做软件的时候经常遇到别人的代码,或者是在他们的基础上开发,或者是用到他们的库,<br />然后读软件的时候就会发现很多地雷:<br /> <br />明雷: 语法错误,一看就出来了<br />暗雷: 内存错误,或者结构体对齐方式不对,或者编译器不同导致enum之类的大小不同,或者一些注释不明确的变量<br />连环雷:这个最难解了,一环扣一环,追溯下来却是因为这个雷是埋在A的,然后又连锁到B,B在连锁回来的雷<br /> <br />步步小心,是没有用的,只有壮烈的踩了上去,自爆过一次,才能积累原创 2011-01-22 22:20:00 · 390 阅读 · 0 评论 -
C和C++混合编程
<br /> C和C++混合编程(__cplusplus 与 external "c" 的使用) 收藏<br />第一种理解<br />比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的<br />函数名。<br />通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:<br />#ifdef __cplusplus<br />extern "C" {<br />#endif<br />/****转载 2011-03-19 20:21:00 · 456 阅读 · 0 评论 -
elf64
ELF头部结构定义为:typedef struct { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff;...原创 2019-08-21 10:55:39 · 656 阅读 · 0 评论 -
load_elf_binary
load_elf_binary 流程:填充并且检查目标程序ELF头部load_elf_phdrs加载目标程序的程序头表如果需要动态链接, 则寻找和处理解释器段检查并读取解释器的程序表头装入目标程序的段segment填写程序的入口地址create_elf_tables填写目标文件的参数环境变量等必要信息start_kernel宏准备进入新的程序入口———————...原创 2019-08-21 10:57:00 · 597 阅读 · 0 评论