Я работаю над встроенным кодом и пытаюсь преобразовать множество назначенных в память регистровых назначений для вызова функций get () / set ().Мне было интересно, можно ли будет поддерживать присваивание адресов, разбросанных по всему коду, но измените #defines, чтобы они принимали присваивание в качестве аргумента функции.
Old Way:
#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?Спасибо за ваши мысли!