我有一个固定的值数组,必须像它一样,因为它使用通信协议以这种方式访问(与问题无关),这样:
#define REGS_ARRAY_SIZE 256
int16 Regs[REGS_ARRAY_SIZE];
每个值都有特定目的,例如:
Regs[ENABLE_MOTOR_ADDRESS]
将用于指示电机启用0或1。
为了更舒适地使用这些必须从我编写的代码和通过通信协议从外部访问的值,我认为我的选择是:
使用宏:
#define drive_enable (Regs [ ENABLE_MOTOR_ADDRESS ])
使用指针:
int16 *drive_enable = &(Regs [ ENABLE_MOTOR_ADDRESS ]);
其中一个比另一个好吗?对我来说,使用宏看起来更方便,因为我避免每次使用变量时都需要取消引用。但是我从来没有对宏的好感......
有任何建议吗?
答案 0 :(得分:4)
我建议使用功能:
int is_drive_enabled()
{
return ( Regs [ ENABLE_MOTOR_ADDRESS ] == 1);
}
void enable_drive()
{
Regs [ ENABLE_MOTOR_ADDRESS ] = 1;
}
void disable_drive()
{
Regs [ ENABLE_MOTOR_ADDRESS ] = 0;
}