2

假设我有一个函数 C。

uint8_t readPin(uint8_t);

uint8_t readPin(uint8_t pin_num)
{
    switch pin_num
    {
        case 0:
            return(PORTAbits.RA3);
            break;
        case 1:
        ...and so on
    }
}

我想使用更易读的名称(可以重新映射)来调用 pin。例如,我希望能够编写:

openDoor();

打电话

readPin(2);

我尝试使用

#define openDoor() readPin(2)

但这不起作用,因为括号。有没有人建议如何最好地做到这一点?我不能只重命名 readPin 函数,因为我想根据我包含的头文件为其拥有超过 1 个不同的别名。

4

2 回答 2

3
#define openDoor() readPin(2)

你所拥有的很好。宏可以有参数列表,甚至是空的参数列表,所以这会做你想要的。

但是,我警告不要像这样使用预处理器。最好避免使用预处理器,特别是当语言可以做完全相同的事情时。一方面,调试器看不到预处理器宏。

void openDoor()
{
    readPin(2);
}
于 2012-11-08T20:04:17.027 回答
1

#define openDoor() readPin(2)

它应该可以正常工作。因为 ,#define仅用于在编译前用为它定义的适当值替换它找到的替换标记,这是预处理。

因此,如果您编写openDoor()它将替换为readPin(2)编译前

于 2012-11-08T20:03:18.523 回答