.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服务器,综合应用核心概念。