你所不知道的 C 语言: 技巧篇
目录
本次講座將選定幾個案例,藉此解說 C 語言程式設計的技巧,像是對矩陣操作進行包裝、初始化特定結構的成員、追蹤物件配置的記憶體、Smart Pointer 等等。
![](https://imgur-backup.hackmd.io/KC1dCXq.jpg)
从矩阵操作谈起
C 语言也可作实现 Object-oriented programming (需要搭配前置处理器扩充语法)
- GNU Manual 6.29 Designated Initializers
- Stack Overflow: Why does C++11 not support designated initializer lists as C99?
- 从 C99 (含) 以后,C 和 C++ 就分道扬镳了。相关差异可以参考: Incompatibilities Between ISO C and ISO C++
- 结构体的成员函数实作时使用
static
,并搭配 API gateway 可以获得一部分 namespace 的功能 - Fun with C99 Syntax
明确初始化特定结构的成员
静态空间初始化配置:
动态空间初始化配置:
追踪物件配置的记忆体
Smart Pointer
C99 Variable Length Arrays (VLA)
字符串和数值转换
GCC 支援 Plan 9 C Extension
GCC transparent union
高阶的 C 语言的「开发框架」
cello 是上面提到的技巧的集大成者,在 C 语言基础上,提供以下进阶特征:
善用 GNU extension 的 typeof
typeof
在 C23 中已由 GNU extenison 转正为 C 语言标准