以下代码片段中的指针函数声明允许我改变结构内每个函数的名称,对吗?这只是假设性的,因此名称还没有意义。
头文件
typedef struct
{
bool (*enabled)(uint32_void);
void (*start)(uint32_t);
void (*stop)(uint32_t);
bool (*expired)(void);
} battle_star_gallactica;
C 文件
static bool Battle_v0_enabled (void) { ... }
static void Battle_v0_start (uint32_t) { ... }
static void Battle_v0_stop (uint32_t) { ... }
static bool Battle_v0_stop (void) { ... }
const battle_star_gallactica battle_v0 =
{
enabled,
start,
stop,
expired
};
...
一个示例使用
battle_v0.start(1000);
对于其他版本(例如 v1 或 v2 而不是 v0),将重复 C 文件片段。
这是如何运作的?
编辑
更正的代码:
头文件
typedef struct
{
bool (*enabled)(uint32_void);
void (*start)(uint32_t);
void (*stop)(uint32_t);
bool (*expired)(void);
} battle_star_gallactica;
extern const battle_star_gallactica battle_v0;
extern const battle_star_gallactica battle_v1;
...
C 文件
static bool Battle_v0_enabled (void) { ... }
static void Battle_v0_start (uint32_t val) { ... }
static void Battle_v0_stop (uint32_t val) { ... }
static bool Battle_v0_expired (void) { ... }
const battle_star_gallactica battle_v0 =
{
Battle_v0_enabled,
Battle_v0_start,
Battle_v0_stop,
Battle_v0_expired
};
...
一个示例使用
battle_v0.start(1000);