c - 启用/禁用功能 v.s. 的基本原理改变状态?

标签 c embedded

我正在为加速度计实现一个驱动程序,我必须在其中实现启用/禁用低功耗模式等功能。

我可以写:

lis2dh12_low_power_enable();
lis2dh12_low_power_disable();

或:

lis2dh12_low_power_change_state(boolean_t enable);

前一种解决方案通常更具可读性,但它可能会创建额外的代码,例如在这种特定情况下:

void foo(boolean_t status) {
    if (status)
        lis2dh12_low_power_enable();
    else
        lis2dh12_low_power_disable();
}

实现这种典型的启用/禁用功能是否有任何理由(类似 MISRA 的规则)?

最佳答案

我会按原样去实现 lis2dh12_low_power_change_state(boolean_t enable); 并将其他两个定义为它周围的宏,例如:

#define lis2dh12_low_power_enable() lis2dh12_low_power_change_state(1)

顺便说一句:boolean_t 不是 C。自 C99 以来,它要么是内置类型 _Bool,要么是来自 的宏 bool标准 bool .h

甚至后缀 _t 被 POSIX 保留用于 future 的类型。

关于c - 启用/禁用功能 v.s. 的基本原理改变状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45670474/

相关文章:

c - 如何在函数内部分配大数组(在堆上使用动态内存分配)

C程序忽略包含sizeof的if语句

c - 嵌入式 c - 如何在程序崩溃时释放分配的内存

c - 打印字符时会发生哪些积分提升?

c - 我有一个包含成员变量名称的字符串。我想用它来访问成员本身

linux - 为什么构建后会生成很多镜像

c - C 静态变量初始化问题

c - 在嵌入式寄存器结构中用位移位替换位域

c - C中指针指向指针的问题

c - 如何使用 resolve MISRA C error for assembly language inline function?