16+
Суббота
23 февраля
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
йцукен  (08.02.2019 14:15) , в ответ на Почему в HAL объявление взаимоисключающих GPIO_MODE реализовано через #define, а не через enum? автор: maleon
Потому что в голом C enum неявно преобразуеся в int, даже если его инициализировать беззнаковой константой, а для битовых масок это неудобно. Только в C++ можно сделать enum беззнаковым. 
#define ONE	1
#define UONE	1U
enum { EONE = 1 };
enum { EUONE = 1U };
enum : uint32_t { CPPONE = 1 };	// error in plain C

uint32_t mask1 = ONE << 31;	// warning : change of sign
uint32_t mask2 = UONE << 31;	// Ok
uint32_t mask3 = EONE << 31;	// warning
uint32_t mask4 = EUONE << 31;	// warning
uint32_t mask5 = CPPONE << 31;	// Ok
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7527 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXIX