Я использовал reinterpret_cast
много раз с g ++.Во встроенном программировании это полезно для отображения struct
, представляющего регистры периферийного устройства на его (фиксированный) адрес:
struct DEV_Registers
{
volatile uint32_t REGA;
volatile uint32_t REGB;
// ...
};
static DEV_Registers& DEV(*reinterpret_cast<DEV_Registers>(0x40000000));
. Это позволяет мне писать код, подобный:
DEV.REGB = 0x12345678;
, которыйделает все правильно (установите в регистре 0x40000004 значение 0x12345678) и вполне разборчиво.
Трудно сказать, если ваш вопрос запрашивает подробности помимо этого.