.jpg)
书: https://pan.baidu.com/s/1jDVnfhmGRwu5jeEuV63Kcg?pwd=bmyj
笔记如下:
- 现代C标准支持:涵盖C11/C17特性(如
_Generic类型泛型、<stdatomic.h>原子操作)。 - 安全编程实践:强调缓冲区溢出防护(
strncpy替代strcpy)、指针合法性检查。 - 底层与高层结合:从内存布局(结构体对齐、位域)到抽象设计(模块化封装)。
- 工具链集成:推荐使用
clang/gcc的现代编译选项(如-Wall -Wextra)和调试工具(GDB)。 - 动态内存管理:深入剖析
malloc/free机制,避免内存泄漏与悬垂指针。 - 多线程编程:C11线程库(
<threads.h>)实现并发,配合互斥锁(mtx_t)同步。 - 文件与I/O高级操作:二进制文件随机访问(
fseek)、内存映射文件(mmap)优化性能。 - 泛型编程技巧:通过
void*和函数指针模拟泛型容器(如通用排序函数)。 - 错误处理模式:统一错误码、
errno与longjmp组合应对复杂错误场景。 - 数据结构实现:手写链表、哈希表、二叉树,对比STL设计思想。
- 性能优化策略:内联函数(
inline)、循环展开、缓存友好访问模式。 - 预处理进阶:条件编译(
#ifdef)、X宏(X-Macros)生成代码,减少重复。 - 嵌入式C扩展:
volatile关键字、寄存器变量(register)在硬件编程中的应用。 - 与C++互操作:
extern "C"混合编译,兼容C++调用C库。 - 静态分析工具:集成
clang-tidy、Coverity检测未定义行为与代码缺陷。 - 网络编程基础:基于
socket实现TCP/UDP通信,处理非阻塞I/O(poll/select)。 - 可移植性设计:处理字节序、字长差异(
int32_t替代int),适配多平台。 - 代码风格规范:命名约定(匈牙利命名法争议)、缩进与注释的最佳实践。
- 测试驱动开发(TDD):通过
Unity等框架实现自动化单元测试。 - 现代项目示例:从解析JSON到构建简易HTTP服务器,综合应用核心概念。