> Ну, вообще говоря, если вы пишете программу под конкретное известное железо, то
> вы точно знаете его характеристики, Я вам тут не ассемблерщик (я прогал на нескольких асмах, но - надоело), и таки использую много довольно разного железа. И со своей стороны считаю портабельность сей весьма и весьма жирным плюсом. По поводу чего предпочитаю скорее C99. Порой несколько уменьшенный subset - для МК.
> следовательно — эта особенность С89 не является для вас проблемой.
Мне виднее и мои приоритеты и что является для меня проблемой. Поэтому для себя я решил оперировать C99 (без VLA, кроме случая когда есть очень крутая причина и это не мешает иным вещам). Ну и posix как апи если это еще к оси интерфейсить надо. И писать максимально портабельно при условии что это ничего не нагибает.
А хотя-бы потому что например удобно на стороне компа какой-нибудь алгоритм или кус логики прозвонить, в том числе под мощными тулсами типа asan/ubsan до того как его на мк допустим пускать.
На микроконтроле ... пакость типа avr вообще будет как яваскрипт, всепофиг, продолжаем работать, хоть там чо. Cortex, конечно, hardfault пульнет но понять от чего он вылез в урезанном окружении - канительнее и неудобнее. Справедливости ради, мне приходится вручную левый доступ к памяти делать чтобы вообще проверить что handler срабатывает, но все-же.
> делать так, чтобы различия не стали проблемой. Си, как ни крути,
> ЯП не для дураков, а для профессионалов, чётко понимающих, что и как они делают.
Ну и с этой точки зрения - если я знаю что вон те данные будут 32 бита, мне логично и заказать им uint32_t, а не какой-то абстрактный int с риском поиметь грабли если на какой-то платформе int окажется вдруг не столько.
Если так заметить, именно профессионалы тоже эти типы не лю и часто делают typedef с более вменяемыми типами и кучей кослылепроверок ifdef/sizeof. Мне так поганить код впадлу и я просто юзаю C99.