我正在研究嵌入式代碼,並嘗試將大量內存映射寄存器分配轉換爲get()/ set()函數調用。我想知道是否可以維護整個代碼中分配的地址分配,但更改#define以使它們將作業作爲函數參數進行分配。可能通過C宏將地址分配轉換爲函數參數?
老方法:
#define MOTOR_REG (*(volatile unsigned char *)(0xFEE002)); //a memory-mapped register
MOTOR_REG = value; //sets value into the memory-mapped register
所需的新方式:
#define MOTOR_REG(set_motor_reg(value);)
void set_motor_reg(unsigned char)
{
//logic to set the motor register
}
MOTOR_REG = value; //value should be passed in to MOTOR_REG macro
那麼,這種情況下可以使用C宏?謝謝你的想法!
你爲什麼要這樣做?它的方式有什麼問題? – 2010-10-27 22:44:23
@Adam Rosenfield - 我懷疑OP必須更新現有的代碼庫,以使用不同的代碼來設置註冊表值(可能首先添加一些驗證),並希望以最小的干預來完成。 – 2010-10-27 22:47:06
@Franci Penov - 正確,我希望避免大量的Find + Replace操作,如果簡單地改變#define是可能的。 – multiproximus 2010-10-27 22:55:17