Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6479072
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16635
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

发布时间:2013-04-11 09:31:58

操作系统:ubuntu11.10加法:减法:乘法:无符号:......【阅读全文】

阅读(11452) | 评论(1) | 转发(3)

发布时间:2013-04-01 15:05:24

    前面写过一篇北极之北之main函数之前,这篇文章其实解决的问题是main函数并不是第一个执行的函数,在main之前,函数的入口点是_start, _start会调用glibc里的__libc_start_main,main函数只是这个函数的入参。 在__libc_start_main中某一步,会执行main函数。这是上面一篇博文获取到的知识。    前两天,CU的gongping11写了一个博文atexit函数和exit函数的理解,这篇博文提到了atexit可以注册退出函数,在main之后,执行注册退出函数。讲的非常的好,我们......【阅读全文】

阅读(1571) | 评论(0) | 转发(0)

发布时间:2013-03-29 12:01:19

操作系统:ubuntu11.10编译环境:gcc测试实例:点击(此处)折叠或打开#include #include #include const char ro_1[ ] = {"this is read only data"};        &nb.........【阅读全文】

阅读(3746) | 评论(3) | 转发(6)

发布时间:2013-03-13 16:33:31

函数名与返回值类型在语义上不可冲突。违反这条规则的典型代表就是C 语言标准库函数getchar 。几乎没有一部名著没有提到getchar 函数,因为它实在太经典,太容易让人犯错误了。所以,每一个有经验的作者都会拿这个例子来警示他的读者,我这里也是如此:char c;c=getchar();if(EOF == c){…}按照getchar 名字的意.........【阅读全文】

阅读(2755) | 评论(1) | 转发(2)

发布时间:2013-03-08 14:55:21

extern“c”简介extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。含义(1) 被extern 限定的函数或变量是extern类型的:a. extern修饰变量的声明。举例来说,如果文件a.c需要引用b.c中变量int v,就可.........【阅读全文】

阅读(1465) | 评论(0) | 转发(1)

发布时间:2013-03-04 16:55:13

new和delete运算符用于动态分配和撤销内存的运算符new用法:          1.     开辟单变量地址空间               1)new int;  //.........【阅读全文】

阅读(1050) | 评论(0) | 转发(2)

发布时间:2013-03-04 16:09:20

已知类String的原型为:    class String     {      public:         String(const char *str = NULL); // 普通构造函数         .........【阅读全文】

阅读(1356) | 评论(0) | 转发(1)

发布时间:2013-03-04 16:05:12

已知strcpy函数的原型是       char *strcpy(char *strDest, const char *strSrc);       其中strDest是目的字符串,strSrc是源字符串。(1)不调用C++/C的字符串库函数,请编写函数 strcpychar *strcpy(char *strDest, const char *strSrc.........【阅读全文】

阅读(1340) | 评论(0) | 转发(1)

发布时间:2013-02-03 16:03:45

setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。先来看一下这两个函数的定义吧:setjmp和longjmp的函数原型在setjmp.h中函数原型:int setjmp(jmp_buf envbuf);setjmp函数用缓冲.........【阅读全文】

阅读(2614) | 评论(0) | 转发(1)

发布时间:2013-01-09 11:33:46

最近看tty驱动源码,发现了一个以前老板上课时讲过的一个c语言技巧,不是很理解,上网学习了一下,总结如下:   在linux源码里 struct tty_buffer { struct tty_buffer *next; char *char_buf_ptr; unsigned char *flag_buf_ptr; int used; int size; int commit; int read; /* Data points here */ unsigned long data[0];......【阅读全文】

阅读(1397) | 评论(0) | 转发(0)

发布时间:2013-01-06 10:41:21

这句主要作用是提示编译器,对这个函数的调用需要像printf一样,用对应的format字符串来check可变参数的数据类型。例如:extern int my_printf (void *my_object, const char *my_format, ...)__attribute__ ((format (printf, 2, 3)));format (printf, 2, 3)告诉编译器,my_format相当于printf的format,而可变参数是从my_printf的第3个参数开始。这样编译器就会在编译时用和printf一样的check法则来确认可变参数是否正确了。......【阅读全文】

阅读(2956) | 评论(0) | 转发(1)

发布时间:2012-12-14 16:42:18

看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事:Microsoft-Specific Predefined Macros__cplusplus Defined for C++ programs only. 意思是说,如果是C++程序,就使用extern "C"{而这个东东,是指在下面的函数不使用的C++的名字修饰,而是用C的The following code shows a header file which can be used by C and C++client applications:// MyCFu......【阅读全文】

阅读(1960) | 评论(1) | 转发(3)

发布时间:2012-12-14 16:40:59

如果直接操作结构体成员是不会取到不期望的值 但是对于要求连续数据格式的时候需要考虑对齐的问题 例如通讯中的数据帧格式等 ,如 ip数据包等#pragma   pack(1) struct   tagStruct {     ... } t; #pragma   pack() 的方式来强制连续存放 其中前面   pack(1)   是指对齐边界为   11。几个结构体例子:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( ......【阅读全文】

阅读(7176) | 评论(0) | 转发(4)

发布时间:2012-12-14 16:38:47

/*creat a bittree*/#include "stdlib.h"#include "stdio.h"typedef struct BiTNode{  int data;  struct BiTNode *lchild,*rchild;}BiTNode, *BiTree;BiTNode* getnode(){  BiTNode* p;  p = (BiTNode*)m......【阅读全文】

阅读(1351) | 评论(0) | 转发(2)

发布时间:2012-12-14 16:36:57

测试代码:#include <stdio.h>int main(void){    int            n = 0;    int            i = 0;  &nbs......【阅读全文】

阅读(1296) | 评论(0) | 转发(1)

发布时间:2012-12-14 16:25:16

预编译(预处理)就是在正式编译之前的,为正式编译做准备,处理以#开头的指令。1, 在看linux内核代码时会看到某些结构体的定义中包含宏定义:12345678910111213struct i2c_msg {    __u16 addr;    /* slave address            */   ......【阅读全文】

阅读(3458) | 评论(0) | 转发(2)

发布时间:2012-12-14 16:23:40

要理解.c文件与.h文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息 编译器在编译时是以c文件为单位进行的,也就是说如果你的项目中一个c文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目 标文件进行函数与变量的重定位,生成最终的可执行文件,在P......【阅读全文】

阅读(2164) | 评论(0) | 转发(4)
给主人留下些什么吧!~~

Dafanzi2016-12-05 18:21

我找到代码了 不用了 谢谢

回复  |  举报

Dafanzi2016-12-05 17:20

大佬,在你这篇讲解内存池的博文(http://blog.chinaunix.net/uid-28458801-id-4254501.html)中,list.h源文件没有提供啊。你能提供这个博文的完整代码我学习学习吗?能的话发给我邮箱可以吗?brottfan@163.com谢谢啦

回复  |  举报
留言热议
请登录后留言。

登录 注册