В том, что стандартный Си В ПРИНЦИПЕ не может быть реализован на МК.
А теперь давайте разбираться.
Первое:
Из чего состоит компилятор языка си - грубо можно выделить 2 компонента:
a)синтаксический лексер и парсер(препроцессора и самого языка) + оптимизатор + генератор кода
б) стандартная библиотека.
Если брать стандартную библиотеку - то да, Вы абсолютно правы, очевидно, стандартная библиотека не может быть полностью реализована на дохлых МК из-за ограниченности ресурсов. Да и бог бы с ней.
Но сама процедура разбора синтаксиса и генератор кода - вполне. Да все мы не глупые люди и понятно, что есть пара оговорок, например про совсем длинные типы типа 8байтного double(да даже 4х байтный int). И всё мы прекрасно понимаем к чему приведет их частое использование, а именно к эмуляции длинных типов на 8ми битном мк. И я всю математику перевожу на fixed point обычно, чтоб уйти от плавающей точки. Но в приведённом тривиальном куске кода - такого нет и в помине.
Кроме того - пара ограничений - это не повод зарубить весь компиль и пустить всё остальное не по стандарту.
Второе:
Если копнуть глубже, а именно в теорию компиляторов: исходя из листинга (повторюсь - я не силён в микрочиповском асме) - то код вполне валидный. Т.е. Варнинг получается предупреждает о том, чего попросту нет!
Кроме - того - убийственным аргументом является то, что варнинг вылезает только при включенной оптимизации. Т.е. это не проблема урезанности языка СИ на конкретном железе, а ошибка оптимизатора.
И мы с вами пришли к тому, что данная ошибка не имеет никакого отношения к железу - и даже к генератору конечного кода. Я думаю ошибка на этапе свёртки AST-дерева оптимизатором, именно там выплёвывается варнинг ещё задолго до начала генерации кода под конкретную архитектуру.
Если говорить проще - ошибка никак не связана с микроконтроллерами.
ПС
Кому интересно что такое AST-дерево - можно почитать даже в википедии
https://ru.wikipedia.org/wiki/Абстрактн ... кое_деревоДобавлено after 4 minutes 40 seconds:Да и вообще - если б даже не существовало никаких стандартов - с учетом того что код тривиален и тип int16_t вполне себе реализуем на всей линейке микрочиповских камней - по логике вещей этот варгиг абсурден, и сточки зрения стандарта и без него