111-D Заявление недостижимо при возврате 0

int main(void) {

    TIM4_Init();
    setSysTick();

    while (1) {
        TIM4->CCR1 = 600;       // 600 == 0.6 ms  -> 0'
        Delay(700);

        TIM4->CCR1 = 1500;      // 1500 == 1.5 ms -> 90'
        Delay(700);

        TIM4->CCR1 = 2100;      // 2100 == 2.1 ms -> 150'
        Delay(700);
    }

    return 0; 
}

Выше приведена часть кода, над которым я сейчас работаю. Я получаю предупреждение о том, что «Утверждение недостижимо» при возврате 0, и я не мог понять, почему.


person lightworks    schedule 27.04.2017    source источник
comment
Потому что return недоступен. Цикл while никогда не завершается. Действительно, не так сложно.   -  person Eugene Sh.    schedule 27.04.2017
comment
Вы должны быть благодарны за то, что получили сообщение об ошибке компилятора, которое действительно имеет смысл и является правильным.   -  person ThingyWotsit    schedule 27.04.2017


Ответы (2)


Удалить возврат 0; :) Компилятор заметит, что нет возможности достичь конца main(), и не будет генерировать предупреждение о достижении конца функции int без возврата

person 0___________    schedule 27.04.2017

Цикл while (1) зацикливается навсегда, поэтому, не имея возможности выйти из цикла, вы не доберетесь до возврата.

Чтобы избавиться от предупреждения, вы можете изменить main() на возврат void

недействительный основной (недействительный) { }

person Justin J.    schedule 27.04.2017
comment
void main - это нестандартный C. Однако он может быть доступен как расширение. - person Eugene Sh.; 27.04.2017
comment
void main(void) разрешен, начиная с версии C99, и требуется для некоторых микроконтроллеров. Однако это может зависеть от компилятора. См. обсуждение int main() vs void main() - person Justin J.; 28.04.2017
comment
Неправильный!! Возвращаемое значение необходимо в некоторых цепочках инструментов (фактически в коде выхода), чтобы определить, как завершить программу. main не является частью компилятора — он просто вызывается кодом запуска. Стандарт C99 советует возвращать значение int, но оно также может быть определено реализацией. - person 0___________; 29.04.2017