我们有一个用于几个嵌入式系统的通用 C 库,它们都使用静态(即编译时)分配。
所以,这意味着我们通常有一些东西可以归结为这一点(如果我们不想更改公共源文件):
#define TMR_MAX 100
int actual_number_of_timers;
SoftTimer softTimers[TMR_MAX];
换句话说,为了避免 malloc'ing,实际上浪费了很多空间。
或者我们可以这样做,即为每个项目设置一组新的枚举:
enum TimerType
{
TMR_KEYBOARD = 0,
TMR_LCD,
...,
TMR_MAX
};
SoftTimer softTimers[TMR_MAX];
这种另一种情况不会浪费空间,但这意味着每个项目都会更改(比如说)timer.h
文件以定义自己的常量。顺便说一句,计时器示例只是原理的一个示例。
那么有没有一种更聪明的方法来获得像编译时“恰到好处的大小”分配这样的东西,它仍然允许我们拥有一个带有单独测试的通用“冻结”代码库?