shads писал(а):НО она обрабатывается в прерывании, значит - должна быть volatile.
Если она обрабатывается в прерывании, она должна быть глобальной.
shads писал(а):НО она обрабатывается в прерывании, значит - должна быть volatile.
Apparatchik писал(а):Если она обрабатывается в прерывании, она должна быть глобальной.
vitalik_1984 писал(а):опустили один из пунктов,
vitalik_1984 писал(а):то не нужно задаваться задачей определить свободный номер.
urry писал(а):смотрится хуже, чем
switch(mode)
case FR_OK:
На всякий случай. Если вам понадобится изменить нумерацию, в любом месте нумератора можете присвоить иное значение счетчика перечисления, следующий элемент будет именно следующим за этим значением.kalobyte писал(а):enum {
FT_OK,
FT_INVALID_HANDLE,
FT_DEVICE_NOT_FOUND,
FT_DEVICE_NOT_OPENED,
FT_IO_ERROR,
тут компилятор как бы автоматом присваивает строкам номера от 0?
Код: Выделить всё
/***************************************/
typedef enum{
FT_OK,
FT_INVALID_HANDLE,
FT_DEVICE_NOT_FOUND,
FT_DEVICE_NOT_OPENED,
FT_IO_ERROR,
}en_t;
/***************************************/
/***************************************/
void fun(en_t en){
switch(en){
case FT_OK:
break;
case FT_INVALID_HANDLE:
break;
case FT_DEVICE_NOT_FOUND:
break;
case FT_DEVICE_NOT_OPENED:
break;
case FT_IO_ERROR:
break;
}
}
/***************************************/
Код: Выделить всё
if gps(status_ok){ usart_send(status_ok) };
Как это увязать с приведенным примером?можно давать одни и те же названия разным функциям
ut1wpr писал(а):Вообще-то наиболее частое применение нумератора - это создание собственного типа данных, а не замена дефайнов.
Согласно определения - для создания структур. Объяснять назначение структуры и ее отличие от перечисляемого типа не стану. Описано у классиков.kalobyte писал(а):а struct тогда для чего?
Совершенно неправильное понимание. Мне никто не запретит создать массив переменных с перечисляемым типом и работать с ним, как обычно.в енум нельзя же создать массив, это просто автоматический нумератор для буквенных значений, когда тебе не важно сами значения, а нужны просто буквенные идентификаторы для удобства чтения кода
Код: Выделить всё
typedef enum {Mo, Tu, We, Th, Fr, Sa, Su}days
days today = Mo;
while(1)
{
while(today < Su)
{
if(today <= Fr) IdiNaRabotu();
else Rasslabon();
if(today == Fr) PosleRabotyBuhaj();
today++;
}
NeBuhaj();
today = Mo;
}Код: Выделить всё
while(today <= Su)
{