【发布时间】:2019-07-18 08:58:55
【问题描述】:
我正在寻找有关嵌入式软件编码风格的答案。我的问题是我需要创建一个抽象层来处理低级寄存器操作。
有两种可能的方法,一种是基于#define 的,另一种是基于函数的。
在第一种方法中,我创建了简单的函数来处理注册操作。在本例中,我将一个微控制器端口设置为低电平状态。
static void breakLockNr_3()
{
LATDbits.RD2 = 0;
}
在第二种方法中,我可以使用#defines 来定义相同的操作:
文件开头:
#define BREAK_LOCK_NR_3 LATDbits.RD2
#define BREAK_LOCK_NR_3_LOW 0
稍后在代码中:
BREAK_LOCK_NR_3 = BREAK_LOCK_NR_3_LOW
您认为哪种方法更易于使用并且更适合代码清理、速度和内存优化?
【问题讨论】:
-
这是非常基于意见的。无论如何......这对我来说似乎是错误的:
BREAK_LOCK_NR_3 = BREAK_LOCK_NR_3_LOW。我希望它是BREAK_LOCK_NR_3 = LOW或者LOCK_NR_3 = BREAK -
我认为#define 方法在性能方面可能更好,因为如果您不内联它,您的函数方法会导致函数调用,恕我直言。如果您想使用第一个功能,我建议您将其内联
-
@Trickzter 静态函数是隐式内联的,您的编译器将在任何合理的优化级别上内联一个单行。
-
@Trickzter 编译器无论如何都可能内联函数调用
-
哦,好的,谢谢你的信息!
标签: c function embedded styles