Question.8
A developer needs to write an enum class value to a hardware register:
enum class
enum class Mode : uint8_t { NORMAL=0, FAST=1, LOW_POWER=2 }; volatile uint8_t *ctrl_reg = (volatile uint8_t*)0x40001000; *ctrl_reg = Mode::FAST;
Will this compile?
Select Answer
Yes -- uint8_t enum writes to uint8_t register directly
uint8_t enum
uint8_t
No -- enum class requires explicit cast: *ctrl_reg = static_cast<uint8_t>(Mode::FAST);
*ctrl_reg = static_cast<uint8_t>(Mode::FAST);
Yes -- volatile allows any assignment
No -- but reinterpret_cast would work
reinterpret_cast