-
- За использование типов данных, размер которых не гарантирован нужно, перед созжением, долго-долго пытать калёным железом :) - Скрипач(16.08.2013 19:53)
- А я считаю, что сжигать нужно за экстремизм и за призывы к сожжению. Рекурсия, есличо :-) - SciFi(16.08.2013 20:33)
- А чо про "пытки каленым железом" забыли? Я считаю, нужны :) - Скрипач(16.08.2013 20:39)
- А еще вырывание ногтей для особо забывчивых (см. 37 сек) :) - rezident(16.08.2013 20:43, youtube)
- А чо про "пытки каленым железом" забыли? Я считаю, нужны :) - Скрипач(16.08.2013 20:39)
- А я считаю, что сжигать нужно за экстремизм и за призывы к сожжению. Рекурсия, есличо :-) - SciFi(16.08.2013 20:33)
- Твое возмущение понятно. Потому что на разных платформах разная разрядность. Не помню, чего именно. Но меня это сейчас не трогает, пока я пробую на AVR. Да и в лом писать каждый раз и искать, чтобы скопипастить unsigned char, unsigned int. Быстро mazur(26 знак., 16.08.2013 17:55)
- Выражение "unsigned int" бессмысленно и сокращается до "unsigned". Либо до "int". Смотря что нужно. А вот с char аккуратнее! Либо всегда сам пиши "unsigned char", либо "signed char". Либо всегда помни, что по-умолчанию на данной платформе (если fk0(652 знак., 16.08.2013 18:00 - 18:03)
- Развивайте моторику пальцев. Если не можете набрать "unsigned" за 2 секунды, то откладывайте программирование и тренируйте навыки машинистки. - SciFi(16.08.2013 18:00)
- пока набираешь, можно подумать о том, что набираешь :) - Vladimir Ljaschko(16.08.2013 18:13)
- в стандарте написано что размеры short, int и long имеют не убывающую последовательность, те могут быть 8-16-32, а могут и 32-32-32. так что uint8_t, uint16_t, uint32_t и сжигай сколько хочешь. - Nikolay801_(16.08.2013 17:39)
- avrlibtypes.h: mazur(2233 знак., 16.08.2013 16:52)
- Забей - юзай что удобно. А если перейдёшь на Cortex, то тогда и посмотришь, что от этого и проблем-то нет - Vit(16.08.2013 17:04)
- Я указал выше какие проблемы. Они есть. - fk0(16.08.2013 17:08)
- бред там - Vit(16.08.2013 17:10)
- Научись обосновывать свои утверждения. А сказанное мною здесь попросту многим не понятно. - fk0(16.08.2013 17:20)
- не выделывайся - Vit(16.08.2013 17:21)
- Научись обосновывать свои утверждения. А сказанное мною здесь попросту многим не понятно. - fk0(16.08.2013 17:20)
- бред там - Vit(16.08.2013 17:10)
- Я указал выше какие проблемы. Они есть. - fk0(16.08.2013 17:08)
- Я тоже могу какую-нибудь ерунду запостить из недр /usr/include -- её там мегабайты. Вот видишь написано unsigned int, signed long и т.п. -- вот их и используй и не морочь мозги. - fk0(16.08.2013 17:00)
- Забей - юзай что удобно. А если перейдёшь на Cortex, то тогда и посмотришь, что от этого и проблем-то нет - Vit(16.08.2013 17:04)
- 1) и CMSIS сжечь - Vit(16.08.2013 16:16)
- Однозначно! Я уже писал. Как, например, 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)
- За использование типов данных, размер которых не гарантирован нужно, перед созжением, долго-долго пытать калёным железом :) - Скрипач(16.08.2013 19:53)