Предположим, у меня есть следующую структуру:Shoud be casting используется для установки битполя?
struct my_struct {
uint32_t bf1 : 3;
uint32_t bf2 : 5;
uint32_t bf3 : 16;
uint32_t bf4 : 8;
};
и следующее перечисление:
enum bf1_values {
Val1 = 0x0;
Val2 = 0x4;
Val3 = 0x7;
};
Кроме того, методы получения и установки функций для BF1:
uint32_t bf1_getter() {
return global_struct.bf1; // cast value to (uint32_t)?
}
void bf1_setter(enum bf1_values val) {
global_struct.bf1 = val; // cast enum to (uint32_t)?
}
Должен ли я использовать типизация функций геттера и сеттера для обеспечения безопасности?
EDIT:
Структура должна быть отправлена в HW.
EDIT2:
То, что я хочу добиться того, чтобы быть действительно уверены, что enum
будет правильно записан в битовое поле, и правильно читать битовое поле.
Тип-литье не имеет ничего общего с безопасностью, часто это совершенно наоборот. –
@JoachimPileborg нормально, но какова нормальная/хорошая практика написания кода? – Alex
Скомпилирует ли это без предупреждений? Тогда вам не нужно кастинг. В противном случае * вы должны убедиться, что код безопасен, кастинг не поможет вам (это только поможет вам закрыть предупреждения компилятора). –