-
- Однозначно! Я уже писал. Как, например, u32 в printf отправлять (%d, %ld -- что ему нужно?), scanf аналогично, (не)эффективности кода опять же (лишние команды на 32-битном ARM для u16, например). А как узнать максимальное/минимальное значение для fk0(210 знак., 16.08.2013 16:21)
- а какие ссылки у Профессионалов. У нас только указатели :-). - abivan(16.08.2013 16:57)
- Паскаль лучше, чем C. - fk0(16.08.2013 17:03)
- всё это наносное - при портировании наоборот заостряет вопросы несовместимости архитектур/либ, иначе огрести из-за разной величины int как нефиг делать. - Vit(16.08.2013 16:36)
- Нужно нормально писать код, чтоб не огрести. Все средства для этого есть. int специально так сделан, чтоб писать код работающий без изменений на любой архитектуре. А с u16 и т.п. -- нужно всё переписывать при смене платформы. Что точно является fk0(258 знак., 16.08.2013 16:40)
- и как на 8-ми разрядном int использовать для счетчика циклов до 255? оверхед и замедление предлагаешь? на проце с 24мя байтами озу и 512 флэша. - abivan(16.08.2013 17:06)
- Ерунда. Дважды делал проекты для MSP430 в паре с двумя разными программистами. Оба писали/отлаживали отдельные программные модули (не привязанные к "железу") на ПК под Windows. Типы данных были свои собственные переопределяемые под конкретную rezident(81 знак., 16.08.2013 17:02)
- Типичный пример "УМВР". Из частного никак не следует общего. А вот для доказательства обратного достаточно единичного примера, и они есть. Волшебные константы в коде (ибо свой limits.h для своих типов никто не написал). Тип стал шире. Не fk0(408 знак., 16.08.2013 17:16)
- ну и намешал мух с котлетами. буэ - Vit(16.08.2013 17:38)
- Я же указал, что именованные типы переопределялись под конкретную платформу. Т.е. поросту говоря, uint16_t был именно 16-и разрядным (подбирался именной такой тип) на всех используемых платформах. - rezident(16.08.2013 17:28)
- А вот с использованием int, заточенного на 32-х разрядность ARM, нахлебался достаточно (чужой исходник пришлось в свой код имплементировать). - rezident(16.08.2013 17:10)
- Та же самая проблема, только наоборот. Исходник с гвоздям прибитым u16 точно так же способен выдать массу приключений на ARM -- во всех местах, где он соприкасается с внешним миром, в котором ожидают int. И заметно проиграть по-скорости в fk0(19 знак., 16.08.2013 17:25)
- Не стоит обобщать на ровном месте. Именованные типы определенной разрядности используются преимущественно в выровненных структурах, предназначенных для передачи и обработки данных. Локальные переменные затачивать на разрядность никто и не rezident(11 знак., 16.08.2013 17:32)
- Ещё раз сжигать. Жечь напалмом. За не пойми какую ендианность, за классные грабли на ARM7/PIC24 с ошибкой BUS ERROR и/или непредвиденным выравниванием... (Де)сериализаторы нужно писать руками, остальное грязный хак. Кортексы развращают. Сделать их fk0(257 знак., 16.08.2013 17:56)
- Ну и облейте себя бензином, коль уж хотите до конца честным быть. Это ведь вы исключительно библиотечные функции пользуете, а мы по-старинке - "вручную" разгребаем :) - rezident(16.08.2013 20:29)
- +1. Вот за это точно сжигать - Vit(16.08.2013 17:58)
- Ещё раз сжигать. Жечь напалмом. За не пойми какую ендианность, за классные грабли на ARM7/PIC24 с ошибкой BUS ERROR и/или непредвиденным выравниванием... (Де)сериализаторы нужно писать руками, остальное грязный хак. Кортексы развращают. Сделать их fk0(257 знак., 16.08.2013 17:56)
- Не стоит обобщать на ровном месте. Именованные типы определенной разрядности используются преимущественно в выровненных структурах, предназначенных для передачи и обработки данных. Локальные переменные затачивать на разрядность никто и не rezident(11 знак., 16.08.2013 17:32)
- Та же самая проблема, только наоборот. Исходник с гвоздям прибитым u16 точно так же способен выдать массу приключений на ARM -- во всех местах, где он соприкасается с внешним миром, в котором ожидают int. И заметно проиграть по-скорости в fk0(19 знак., 16.08.2013 17:25)
- Типичный пример "УМВР". Из частного никак не следует общего. А вот для доказательства обратного достаточно единичного примера, и они есть. Волшебные константы в коде (ибо свой limits.h для своих типов никто не написал). Тип стал шире. Не fk0(408 знак., 16.08.2013 17:16)
- даже спорить не хочу - не только с пиками имею дело:). пишешь явно о чём-то виртуальном... "любое переписывание", "принципиально невозможна компиляция" - вааще набор страшилок - Vit(16.08.2013 16:51)
- Да, с K&R сложно поспорить. Идея об отсутствии типов с гвоздями прибитой разрядностью -- именно их. - fk0(16.08.2013 17:01)
- они точно C11 не придумывали. - Vit(16.08.2013 17:06)
- Я вообще-то про C89 или даже более старый. int всю жизнь не имел жёстко заданной ширины. - fk0(16.08.2013 17:17)
- а я о невозможности предать переменную библиотечной функции - Vit(16.08.2013 17:21)
- Указатель на неё не передашь. И даже warning можешь не получить. Саму переменную тоже: printf("%d", U32) при переезде с 32-бит на 16 бит. В лучшем случае компилятор умеет парсить формат printf и давать warning. А если vprintf, то не факт, что fk0(438 знак., 16.08.2013 17:31)
- а я о невозможности предать переменную библиотечной функции - Vit(16.08.2013 17:21)
- Я вообще-то про C89 или даже более старый. int всю жизнь не имел жёстко заданной ширины. - fk0(16.08.2013 17:17)
- они точно C11 не придумывали. - Vit(16.08.2013 17:06)
- Да, с K&R сложно поспорить. Идея об отсутствии типов с гвоздями прибитой разрядностью -- именно их. - fk0(16.08.2013 17:01)
- Нужно нормально писать код, чтоб не огрести. Все средства для этого есть. int специально так сделан, чтоб писать код работающий без изменений на любой архитектуре. А с u16 и т.п. -- нужно всё переписывать при смене платформы. Что точно является fk0(258 знак., 16.08.2013 16:40)
- а какие ссылки у Профессионалов. У нас только указатели :-). - abivan(16.08.2013 16:57)
- Однозначно! Я уже писал. Как, например, u32 в printf отправлять (%d, %ld -- что ему нужно?), scanf аналогично, (не)эффективности кода опять же (лишние команды на 32-битном ARM для u16, например). А как узнать максимальное/минимальное значение для fk0(210 знак., 16.08.2013 16:21)