C语言提高 (7) 第七天 回调函数 预处理函数DEBUG 动态链接库

链表就是一个结构体 指针指向自身结构体类型

 

 

双向链表插入的时候 先改变自身 再改变两边

 

双向链表删除的时候 先改变两边 再改变自己

 

逆序一个单向链表

 

 

回调函数

指向函数的指针

 

 

4链表的遍历回调用法

 

// 链表的统一遍历的方法

void for_each(struct node *head,void(*fp)(struct node*node))

 

 

 

5数据类型的加强

 

 

6 数据类型加强的练习

 

 

7预处理步骤和宏函数的陷阱

 

续行符

 

预处理器的处理过程:

 

 

 

8函数的do-while(0)用法

 

 

 

在if else中就不行了,会报错

因为else前面是两行表达式了

 

 

宏定义上面加{}

 

 

这时候可以用了,但是必须把分号去掉

 

 

定义宏函数

 

这样结尾可以写;(分号)

 

 

9中午回顾

 

10宏函数的操作符

 

 

 

11宏函数debug接口的简单封装

 

 

12程序中记录日志的标准

 

 

13动态库的封装

 

 

 

.dll是windows的动态库

linux下是.so

 

 

.dll是最终代码

.lib是告诉编译器dll文件在哪

 

windows下动态库是一对

 

 

 

linux下是.so

 

(因为lib文件比较小,先加载进来.. windows的设计

 

 

(放在函数前面了)

 

生成

 

 

放到一起

 

 

14 调用第三方动态库

 

.lib和.dll都是二进制文件,看不到源码

 

连接器,

把.lib文件加进去

 

 

 

15内存检测工具memwatch

 

(windows不用写D linux要加D

 

属性 然后添加宏

 

 

里面重写了malloc

 

 

 

放到HOME里面这个文件里面

 

linux下有

 

posted @ 2019-02-13 11:23  hh9515  阅读(295)  评论(0编辑  收藏  举报