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下有

原文地址:https://www.cnblogs.com/eret9616/p/10368844.html