1. C++ / Говнокод #22884

    −18

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    typedef long long					dlong;
    typedef long double				ldouble;
    typedef unsigned long			ulong;
    typedef unsigned short			ushort;
    typedef unsigned char			uchar;
    typedef unsigned long long		udlong;

    Говно или нет?

    Запостил: Arman, 01 Мая 2017

    Комментарии (159) RSS

    • Сукаотступы, простите, не додумался в предпросмотр.
      Ответить
    • Говно. Ты в блокноте пишешь что ли, чтобы на буквах экономить?
      Ответить
      • После цесарки цапля заёбывает. Ансайнед сука лонг пиздец лонг мать, блѣ.
        Ответить
        • #define fucking
          #define shit
          #define cunt
          
          //...
          
          fucking unsigned long cunt val1;
          fucking long shit val2;
          Ответить
          • #define enough ;
            #define mydick short
            #define notmydick long
            #define condom try


            чо уж там.
            Ответить
    • показать все, что скрыто> long long
      ненужно
      > long double
      ненужно
      > unsigned long
      ненужно
      > unsigned short
      ненужно
      > unsigned char
      uint8_t
      > unsigned long long
      ненужно

      Из всех нефиксированных интов нужны только int и unsigned int.
      Ответить
      • Въебал плюс.

        Хотя unsigned int тоже под сомнением, имхо.
        Ответить
      • показать все, что скрытоненужны типы, или тайпдефы для них?
        Ответить
        • Остальные типы нужны только чтобы через них тайпдефать uintXX_t, size_t, uintptr_t и т.п. В сыром виде они несъедобны.
          Ответить
      • С _t типами по жизни?
        А как же никому не нужная кроссплатформа по части железа?
        Ответить
        • показать все, что скрытокак раз всякие short и long которые на разных платформах разного размера кроссплатформу и рушат, а с uint16_t работает везде.
          Ответить
          • показать все, что скрытопорушил твою кроссплатформу, проверь
            Ответить
          • показать все, что скрытоДа не рушат они нихуя анлесс ты завязался на их размер

            Я вот знаю что инт это лучший размер для числа в цпу, и похуй 16 он бит или 64 и мне заебись
            Ответить
            • Ну т.е. тебе достаточно 16 бит и ты за этим везде следишь. Т.е. int16_fast_t.
              Ответить
            • Внимание, вопрос. Уважаемые знатоки, а как не завязаться на размер?
              Сериализация? Соснули. Размеры везде разные, файлы непереносимые.
              Счётчик чего-нибудь? У меня работает, а у соседа внезапно переполнился.
              Задали байты шестнадцатиричным питухом? CHAR_BIT = 6.
              Не завязался на размер - с вероятностью 1 найдётся платформа, где твоя валидная программа не заработает.

              Подход с неопределёнными размерами int/long int работает только в браузерах, где не важно, отрисуется ли снежинка, или её координаты - (-1e9, NaN). Хотя, даже в браузерах уже пишут серьёзные приложения.
              Программа на Си сопровождается молитвой программиста о том, чтобы её не скомпилировали там, где инты покороче.

              А типы надо делать в формате ('u' | 's')? ('l' | 'g' | 'e') DIGIT+
              Т.е. например sl32 - знаковое целое не более 32 бит, ug16 - беззнаковое целое не менее 16 бит, e128 - знаковое целое ровно 128 бит.
              Или даже диапазоны задавать. Например, UINT(16, sizeof(void*) * CHAR_BIT). Тогда и у компилятора будет выбор, и у программиста гарантии.
              Ответить
              • показать все, что скрытоВнезапно переполнил твой защёчный счётчик сперматозоидов своим беззнаковым целым шестнадцатеричным петухом, проверь.
                Ответить
              • > Задали байты шестнадцатиричным питухом? CHAR_BIT = 6.
                Не меньше восьми же
                Ответить
              • показать все, что скрыто>>Сериализация? Соснули.
                Разумеется. Но сериализация нужна не всегда.

                >>Счётчик чего-нибудь? У меня работает, а у соседа внезапно переполнился.
                MAX_INT?
                не-а, не слышал.

                Кстати, разная разрядность тоже отстой. У меня malloc работает, а у соседа он вернул null.

                >>Не завязался на размер - с вероятностью 1 найдётся платформа, где твоя валидная программа не заработает.
                Чушь.
                Ответить
                • > MAX_INT?
                  > не-а, не слышал.
                  Ну хорошо,
                  #if MAX_INT < 1000000
                  #error Int is too small.
                  #endif


                  > Чушь.
                  Чушь. См. выше пример с миллионом.
                  Ответить
                  • показать все, что скрытоЗалил тебе в рот миллион сперматозоидов, проверь.
                    Ответить
                  • показать все, что скрытоЕсли ты explicitly знаешь что тебе нужен миллион тогда да, но далеко не всегда это нужно.
                    Ответить
                    • Понятия из реального мира (как минимум, размеры файлов; количества людей в мегаполисах) используют числа большие, чем гарантированные 255.
                      С сишными типами чисел только абстрактные библиотеки для вычисления факториалов можно писать, где не важно, что в реальности работает максимум факториал пяти. Настоящие числа потребуют нижнюю планку.
                      Ответить
                      • показать все, что скрыто>>Понятия из реального мира используют числа большие, чем гарантированные 255.
                        лол) насколько бОльшие?
                        Ответить
                        • > насколько бОльшие?
                          http://govnokod.ru/22884#comment385412

                          22884 / 255 > 89.7
                          385412 / 255 > 1511.4

                          Даже на ГК - в сотни-тысячи раз большие.
                          Ответить
                          • показать все, что скрытопонятно. Похоже что типы на 8 и сайнд 16 бит тоже не нужны, потому что в них не влезет число 385412
                            Ответить
                            • > Похоже что типы на 8 и сайнд 16 бит тоже не нужны, потому что в них не влезет число 385412
                              Ну, багор. Подточить тебя пора.
                              Не нужны char/short/long/int потому, что по сути гарантируют только -128..127 или 0..255.
                              int8_t и uint_16t нужны, когда числа входят в их гарантированный диапазон.
                              Ответить
                              • В паскале, кстати, были же инты с произвольными границами.
                                Ответить
                              • показать все, что скрытоты только что сказал что ничто никогда не входит в их диапазон
                                Ответить
                                • OK Google Сократ,
                                  Довольно много понятий из реального мира (как минимум, размеры файлов; количества людей в мегаполисах) используют числа большие, чем гарантированные 255.
                                  Ответить
                                  • показать все, что скрытопсц

                                    ты высосал из пальца какое-то увтерждение с рэндомным числом в середине и пытаешься мне его доказать.

                                    "Я утверждаю что числа меньше 12348752 не нужны". Ты точно программист?
                                    Ответить
                                    • Тупенький что ли?
                                      Число 385412 - контрпример для утверждения о достаточности типов с 0..255. Число 385412 встречается в реальной программе "Сервер сайта ГК" и не влезает в один октет. Подобных целых чисел, встречающихся в реальной жизни и находящих своё представление в программах - куча.

                                      > пытаешься мне его доказать
                                      Уже доказал. Доказательством служит сам факт наличия этого числа в выхлопе реальной программы "сервер ГК".
                                      Ответить
                                      • показать все, что скрытоЗаложил своего тупенького тебе за щеку, проверь.
                                        Ответить
                                      • показать все, что скрыто>> Доказательством служит сам факт наличия этого числа в выхлопе реальной программы "сервер ГК".

                                        а вот доказательство ненужности типа char: https://en.wikipedia.org/wiki/Trillion

                                        трудно говорить с гуманитарием
                                        Ответить
                                        • показать все, что скрытоНагуманитарил тебе под нёбо, проверь.
                                          Ответить
                                        • Гуманитарий, учись программировать или не кукарекай больше по теме, в которой не разбираешься.

                                          > а вот доказательство ненужности типа char: https://en.wikipedia.org/wiki/Trillion
                                          Где? Где хотя бы доказательства, что триллион используется в программе как целое значение?
                                          Я показывал значение такой целочисленной переменной, для которой как минимум используется арифметическая операция (x+1).

                                          P. S. Даже с такой простой задачей как продемонстрировать использование целого числа в программе тупой багор не справился.
                                          Ответить
                                          • @@@не кукарекай больше по теме, в которой не разбираешься.

                                            С трудом узнал в этом сердитом подростке объект своего почитания.
                                            Кому, и с какой целью Вы одолжили Вашу учётку?
                                            Ответить
                                            • показать все, что скрытоОдолжил твой анус камерунским неграм, проверь.
                                              Ответить
                                              • Нельзя одолжить анус, не являясь его хозяином. Если бы ты побольше читал, а не словоблудил и махал бы руками, подобно ебантею-Милонову, отхватившему изрядных пиздюлей на гей-параде, ты бы рано или поздно наткнулся на толстую, чёрную книжку, в которой сказано: "не мечите бисера перед свиньями", и воззвал бы 1024-- к порядку мудростию сией. Не стоит ничего доказывать идиотам.
                                                Ответить
                                                • показать все, что скрыто>>>"Нельзя одолжить анус, не являясь его хозяином."

                                                  Овладел твоим анусом, проверь.
                                                  Ответить
                                                • О мудрый доктор, Ты как сама совесть. Полегчало.
                                                  Мои горячность молодости и наивность иногда делают из меня живую мишень в чёрством мире самодовольных интернет-троллей.
                                                  Даже немного завидую себе, что меня некогда отождествили с доктором.
                                                  Ответить
                                                  • Я тоже иногда завидую, только по обратной причине.
                                                    Ответить
                                                    • Простите, какая же причина обратна к высказанной мной? Тут не всё так однозначно с точки зрения используемого нами языка.

                                                      Кто-то сказал, что при капитализме происходит эксплуатация человека человеком, а при коммунизме — совсем наоборот.
                                                      Ответить
                                                      • Вы пишете: "Даже немного завидую себе, что меня некогда отождествили с доктором", а я, стало быть, ревную себя к себе, когда меня, доктора, отождествляют с таким просветлённым, порядочным человеком, гордостью всех жителей подъезда как тов. 1024--

                                                        @а при коммунизме — совсем наоборот

                                                        Это заметная точка зрения.
                                                        Ответить
                                                        • Теперь понял. Какие сложные чувства. Я, признаться, потратил слишком большую долю своей ментальной энергии на воспитание в себе технаря и оттого по сравнению с младенческой нейтральностью несколько ослаб по части душевных переживаний и творческого видения мира.
                                                          Ответить
                                                        • Эх, всё же гениальный Вы человек. Только на некоторые Ваши проявления я реагирую несколько примитивно и, признаться, ставлю минус комментариям, начиная верить тем, кто ставит Вам диагнозы. Простите меня за это.
                                                          Ответить
                                            • Простите, доктор. Не могу утерпеть, когда во всемирной паутине кто-то не прав, а особенно - когда нарочно играет из себя тупого, желая продемонстрировать свой ум (да, даже так бывает).
                                              Пациент высказывает бредовые утверждения, желая подловить меня и показать, какой он мозговитый, но в итоге выглядит как клоун, который придирается к словам не понимая сути сказанного, с которой он быть может даже согласен.
                                              Ответить
                                          • показать все, что скрытолол) то-есть если я покажу тебе код где к 255 прибавляют единицу то ты сделаешь вывод что однобайтовые типы данных не нужны?;)

                                            похоже что js это диагноз
                                            Ответить
                                            • Похоже, багор туп и не умеет читать.

                                              Последний раз. Тезисы для болезных:
                                              1. int/long/char не нужны, т.к. гарантируют только 8 бит под число, чего в реальном коде явно не хватает.
                                              2. Есть случаи, когда используются малые числа, которые влезают в 8 бит, тогда можно использовать int8_t и uint8_t.
                                              Ответить
                                              • показать все, что скрытопохоже что у 1024 подгорает, кажется он начинает понимать какую чушь о н несет

                                                >>int/long/char не нужны, т.к. гарантируют только 8 бит под число
                                                точнее говоря они не гарантируют что туда влезет мое число в 128 бит.
                                                А еще они не гарантируют что сложение двух интов не займет 44 года. В стандарте про это ни слова.

                                                Если мне нужна гарантия размера -- я беру _t, если не нужна -- зачем мне _t?

                                                >>чего в реальном коде явно не хватает.
                                                в твоем не хватает, а в моем хватает.
                                                У меня может быть буфер размером MAX_INT и мне с ним ок.
                                                поле с возрастом, да что угодно
                                                ну давай, скажи что на говнокоде говна больше чем на 8 бит и это твое
                                                доказательство, лол.

                                                Размер типа может иметь значение, а может не иметь, в зависимости от задачи.
                                                Ответить
                                                • показать все, что скрытоБароп, в этом споре ты не прав, а 1024 прав. Ты выдергиваешь его тезисы из контекста и выворачиваешь их с ног на голову. Это называется софистика.
                                                  Ответить
                                                • > поле с возрастом, да что угодно
                                                  Что "что угодно"?
                                                  Количество детей у человека, количество детей в классе, сортов мороженного в киоске - может и влезут.
                                                  Но размер файла, количество единиц продукта, выпущенного заводом, количество людей в городе, посетителей в больнице - не хватит.

                                                  > ну давай, скажи что на говнокоде говна больше чем на 8 бит и это твое доказательство, лол.
                                                  Да, это моё доказательство. Пользователей > 20K, постов > 300K, символов в комментарии - от 1 до 2К. На остальных сайтах так же. У народа по 300 друзей в соцсетях, у хабра 60К просмотров статей, картинки заливают 300кБ - 5МБ. В реальной жизни и не пахнет одним октетом.

                                                  Предсказываю, что сейчас среднестатистической программе требуется 24 бита для представления целого числа.
                                                  Ответить
                                                  • показать все, что скрыто>>Предсказываю, что сейчас среднестатистической программе требуется 24 бита для представления целого числа.


                                                    ахахахаа, я тут даже не знаю что сказать. Если ты не троллишь , а реально так думаешь то говорить не о чем. А если троллишь от тем более
                                                    Ответить
                                                    • Багридзе, читать умеешь?
                                                      > картинки заливают 300кБ - 5МБ
                                                      Как раз в три байта размеры и входят.
                                                      Ответить
              • показать все, что скрытоА откуда вообще такая задача? Если тебе важен перформанс, то ты уже заведомо знаешь про целевую платформу больше, чем просто размеры интов. Если тебе важно гарантированное отсутствие говна в коде на нестандартной платформе - то ты и правишь код, иначе с нестандартными платформами никак. Если тебе важно, чтобы код запустился неизвестно где хоть тушкой, хоть чучелком - ты завернёшь его в вмку, которая к реальной архитектуре никакого отношения не будет.
                Ответить
                • показать все, что скрытоИз жизни? Тот же архиватор/конвертер картиной - это большие файлы с бинарной совместимостью, независимость от платформы (файлы везде едины).
                  Ну программисту приятнее написать кроссплатформенный код.

                  А так обман какой-то получается. Вроде язык не зависит от платформы, а по факту чтобы что-то серьёзное написать, надо тонкости знать или ВМ пилить.
                  Ответить
                  • показать все, что скрытоP.S. И за что мы платим, когда избегаем всякие ID и UB, созданные для кросспитульности, используем безразмерные числа, если всё равно приходится упираться в конкретику ОС?
                    Ответить
                  • показать все, что скрыто> Из жизни? Тот же архиватор/конвертер картиной - это большие файлы с бинарной совместимостью, независимость от платформы (файлы везде едины).

                    Ты точно ёбнулся.

                    У 99% архиваторов ядро писано на асме.

                    Архиваторы - это классический пример непоратабельного софта. Ооочень часто для каждой архитектуры пишется своя реализация. (Потому что иначе ими никто пользоватся не будет.) Да, выхлоп/вхлоп идентичны - но и только.
                    Ответить
              • показать все, что скрыто> Внимание, вопрос. Уважаемые знатоки, а как не завязаться на размер?

                Ты завязываешься на минимальный нужный диапазон значений. Берешь тип в который это помещается, и округляешь до инта. Если не влазит в инт - заводишь специальный тайпдеф для этого типа. Если не влазит в нативные типы - надо извращатся.

                > Сериализация? Соснули.

                И как только все программы файло сохраняют?... Чувствую что тут не реальность, а кто-то другой сосёт.

                Плюс, ты забываешь про очевидный вариант сериализации: ASCII.

                > Задали байты шестнадцатиричным питухом? CHAR_BIT = 6.

                Ц реалистически не поддерживает ничего где байт не 8 бит. -> ABI поддерживает только 8 бит -> даже если платформа 9 бит/этц, будут симулировать 8 бит.

                В каком то смысле, байты уже давно симулируются, потому что многие платформы (количественно: подавляющее большинство) нативно не поддерживают арифметику/этц на не-регистрах: они в принципе не могут два байта сложить. поэтому расширяют байты до вордов, складывают ворды, нормализуют результат до байта. округление типов локальных переменных до ворда - это одна из типичных оптимизаций компиляторов.
                Ответить
              • показать все, что скрыто> Подход с неопределёнными размерами int/long int работает только в браузерах, где не важно, отрисуется ли снежинка [...]

                Идиотизм. 16 бит музейный комп 30-40 летней давности -> диапазон значений (-32768, 32767) -> разрешение дисплеев еще пару десятилетий надо что бы это переполнить. (С другой стороны, нубам и идиотам, наверное нужно только пара минут.)

                > Программа на Си сопровождается молитвой программиста о том, чтобы её не скомпилировали там, где инты покороче.

                Похоже, ты просто портабельного софта не видел.

                Многие программы и библиотеки компилятся и работают на ура - без молитв.

                С другой стороны, прагматически, сейчас существуют только 32 и 64 бит компы. 16 бит микроконтроллеры тихо сидят в своих нишах (и компов на них никто не делает) потому что там тематика другая и портабельность там тоже другая.

                А в случае 32 вс. 64 бит все просто: int как минимум 32 бит. Если тебе идиоту даже диапазона [-2,147,483,648 , 2,147,483,647] что бы какую-то ебучую снежинку нарисовать не хватает, то тебе серьёзно надо задуматся о смене професии.
                Ответить
                • показать все, что скрыто> int как минимум 32 бит

                  Стандарт считает иначе. Если нужны как минимум 32 бита, надо юзать long.

                  short/int/long/long long в прикладном софте не нужны. Если ты хочешь сказать, что тебе нужно минимум 32 бита, так и скажи: int_fast32_t. Так всем понятно, что происходит, ни у кого нет никаких иллюзий.
                  Ответить
                  • показать все, что скрыто> Стандарт считает иначе.

                    Какой стандарт? И какое приложение этого стандарта (платформа? компилер?) так делают?
                    Ответить
                    • показать все, что скрытоПровёл тебе хуем по губам, проверь.
                      Ответить
                    • показать все, что скрыто> Какой стандарт?
                      Стандарт языка C, разумеется. Мы же о переносимом софте говорим, так ведь? К примеру, из C99

                      5.2.4.2.1 Sizesof integer types<limits.h>
                      ...
                      — minimum value for an object of type int
                      INT_MIN -32767 //−(2^15−1)
                      — maximum value for an object of type int
                      INT_MAX +32767 //2^15−1


                      Посикс это дело не уточняет, SUSv1 тоже. Только в SUSv2 расширили

                      {INT_MAX}
                      Maximum value for an object of type int.
                      Minimum Acceptable Value: 2 147 483 647

                      {INT_MIN}
                      Minimum value for an object of type int.
                      Maximum Acceptable Value: -2 147 483 647

                      -- http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
                      Ответить
                      • показать все, что скрытоДал тебе понюхать мои яйца, проверь.
                        Ответить
                      • показать все, что скрыто> Стандарт языка C, разумеется. Мы же о переносимом софте говорим, так ведь? К примеру, из C99

                        Это всего лишь минимумы. Стандарт диктует что реализация стандарта (компилер, платформа) не может делать меньше.

                        И какая платформа - кроме какого MS-DOS - это делает?

                        Я веду к чему: поэтому то ты никогда не видишь (и не увидишь) лэйбла "портабельно на все С платформы!", а видишь (например) "поддерживаем прыщи, бсд и солярку, 32/64 бита."

                        Стандарт это всего лишь основа. Ты портируешь не на стандарт - ты портируешь на платформу.
                        Ответить
                        • показать все, что скрытоТак зачем усложнять себе жизнь и использовать int вместо int_fast32_t? В сишке
                          единственный недостаток — унылый printf, который напрямую эти типы не поддерживает, и приходится пользоваться макросами для форматирования типов. Но у size_t та же проблема.
                          Ответить
                          • показать все, что скрытоУсложнил тебе анальную жизнь, проверь.
                            Ответить
                          • показать все, что скрыто> унылый printf

                            просто кастишь переменные в стандартные типы.

                            > Но у size_t та же проблема.

                            "%zu" уже есть как минимум десятилетие. на бсд появился раньше, но до линухов тоже дошел. в posixv7 есть. в портабельном коде конвертил в (long) - ни разу проблем не было.

                            я честно говоря не знаю о каких сложностях ты говоришь. я в телекомах так 10 лет писал - и все работало, и работало на 3-5 *них платформах.

                            я догадываюсь что твое видение реальности омрачено опытом работы под винды. я тоже когда то таким был: все было сложно, мрачно и обложено граблями. был шанс - ушел с виндов. ни разу не жалею. граблей и говна намного меньше. проблемы поменялись - но уже одно отсутствие вечных неизменных тупостей некрософота это громадное облегчение. пару лет тоже подобные сомнения меня мучали - а потом привык на int/long/etc полагатся, и о чудо, оно работает. "полагатся" - вот это именно то сентимента на виндах остро не хватает.
                            Ответить
                            • показать все, что скрытоХуяк-хуяк и в продакшон! А за багфиксы потом можно премии получать.
                              Ответить
                            • показать все, что скрыто> я догадываюсь что твое видение реальности омрачено опытом работы под винды

                              лол, я ни одной программы чисто под винду не написал.

                              Моё видение реальности омрачено опытом решения олимпиадных задач, когда ты ковыряешься в байтах, а среду выполнения своих программ не контролируешь. А потом выясняется, что там в long 4 байта было, и тебя вообще UB в программе, потому что ты знаковые переполнил.
                              Может звучать смешно, но это быстро приучает к анализу размерностей, очень помогает на код-ревью.
                              Ответить
                              • показать все, что скрыто> Моё видение реальности омрачено опытом решения олимпиадных задач
                                > Может звучать смешно

                                Это не смешно. Это даже как то печально. Ну да в каждой нише есть своя специфика. От проблем никуда не деться: за ихнее решения деньги то и платят.
                                Ответить
                              • показать все, что скрыто> но это быстро приучает к анализу размерностей, очень помогает на код-ревью.

                                Вопрос только: вытекает ли из "помогает на код-ревью" в улучшает что то в конечном продукте. Или ты один из тех "заноз" которые докалупываются до проблем в каком `int a = sizeof(long);`.
                                Ответить
                                • показать все, что скрыто> докалупываются до проблем в каком `int a = sizeof(long);`

                                  Ну тут легко показать, что проблемы маловероятны. А вот функция вроде
                                  template <class T> T sum(const vector<T>& items);
                                  вообще говоря, вполне может вызывать подозрения. В этом плане std::accumulate грамотно сделан.
                                  Ответить
                            • показать все, что скрыто>> я в телекомах так 10 лет писал

                              - то-то ты такой ебанутый!
                              Ответить
                  • Роман дело говорит.
                    Ответить
                • показать все, что скрыто> Многие программы и библиотеки компилятся и работают на ура - без молитв.
                  > С другой стороны, прагматически, сейчас существуют только 32 и 64 бит компы.
                  Выходит, практика и массовость молятся за программиста.
                  Ответить
        • показать все, что скрыто> кроссплатформу
          - Какого размера у тебя числа?
          - Вот тут короче инта сделал, а вот тут - длиннее.
          - Сколько в битах, блядь, спрашиваю?!
          - Зачем ругаешься, насяльника, вот тут короче инта, а тут - длиннее.
          Ответить
        • показать все, что скрытоДа кроссплатформенность то кроссплатформенностью, а я горя хлебнул когда код скомпилирован был под туже платформу но другой разрядности, с тех пор _t в разного рода деликатных местах использую. Надо быть предусмотрительным или пролетишь.
          Ответить
        • > А как же никому не нужная кроссплатформа по части железа?

          Ну так если под винды программируешь, чего тогда некрософтовскими тайпдефами/дефайнами не пользуешься? чем DWORD не угодил??

          На *нихах int/long работают в качестве портабельных типов превосходно.

          Потому что портабельность редко ломается на размерности типов - она чаще ломается на кривых кастах основаных на неявных предположениях о размерности типов, которые унаследованы от кривых системных интерфейсов. Сравни POSIX vs WinAPI на досуге. POSIX основан на int/long/size_t + дюжина специальных типов. WinAPI основан на большой куче говна дефайнов и тайпдефов для каждой мелкой чмошной байды. Первое с мелкими поправками работает уже десятилетиями. Второе ломается с каждым значительным релизом винды, потому что редко кто догадывается где какой тип нужно правильно использовать, потому что уже WinAPI само местами криво: вывод одной функции не подходит как ввод другой.
          Ответить
          • > POSIX основан на int/long/size_t]
            POSIX тихо оставляет это имплементации. Поэтому все имплементации ебутся с когда-то 32битным time_t/clock_t, 32битным off_t (и дублированными системными вызовами, принимающими off64_t) и многим другим.
            Ответить
            • > и дублированными системными вызовами ... off64_t

              они никогда не были частью стандарта - они присутствую как ОС расширения для облегчения миграции/доступ к 64бит данным из 32бит софта.

              > time_t/clock_t, off_t

              и есть еще парачка. но то что ты назвал это как раз и есть центр 32/64 совместимости. (самое смешное что даже есть 16 бит позиксы системы - не щупал но читал.)

              самое ненавистный тайпдеф/дефайн в позиксе на самом деле это socklen_t - попытка помирить SysV (size_t) c BSD (int; как если бы размер сокета когда может 4ГБ превосходить). на куче систем он: есть/нет/есть но в левом хидере/есть но кривой/есть но кривой, и не дефайн, почему нельзя проверить его наличие или отсутствие. но даже это весьма изолированая проблема без каких либо побочных эффектов.
              Ответить
              • показать все, что скрыто>>самое смешное что даже есть 16 бит позиксы системы

                под 16 bit protected mode (это двойка без paging) была xenix в теории)
                Ответить
              • > они никогда не были частью стандарта - они присутствую как ОС расширения для облегчения миграции/доступ к 64бит данным из 32бит софта.
                Скорее они присутствуют из-за того, что стандарт не регламентировал размер, кто-то поставил его 32битным, его не хватило, а поменять ABI -- это убиться.

                И такой стандарт скорее вреден: "ну, time_t это число, может целое, может дробное. функция time() возвращает time_t". Нулевая польза для разработчика, если мы даже не можем быть уверены, time() != time() через день, и что в данный момент time() не вовзращает ERANGE всегда.

                С проблемами с socklen_t не сталкивался, но я ни под что экзотическое не пишу.
                Ответить
    • лапша udlong
      Ответить
    • показать все, что скрыто
      Ответить
    • показать все, что скрытоНе понимаю, о чём вы все там пиздите. Я, к примеру, невесть сколько лет программирую на "PHP", разрабатываю сложнейшие сайты так же бойко, как негры разрабатывают ваши анусы, и при этом передо мною ни разу не встал серьёзный вопрос о типах данных, в области которых мои познания ограничиваются лишь функциями "intval", "floatval" и "strval". Какие cast'ы? Какие биты? Какая шестнадцатеричность? Какая размерность? Какие типы?
      Ответить
      • Ваши инты в PHP тоже могут сжаться от холода, петухи. Вот в ECMAScript всё точно определено.
        Ответить
      • показать все, что скрытоА про зарплату становился уже серьёзный вопрос?
        Ответить
        • показать все, что скрытоДа, ставился - твой папенька в последнее время возомнил, что у него золотая задница.
          Ответить
          • показать все, что скрытоУблюдок, мать твою, а ну иди сюда, говно собачье! Что, решил ко мне лезть?! Ты, засранец вонючий, мать твою, а? Ну, иди сюда, попробуй меня трахнуть, я тебя сам трахну, ублюдок, онанист чертов, будь ты проклят! Иди, идиот, трахать тебя и всю твою семью, говно собачье, жлоб вонючий, дерьмо, сука, падла! Иди сюда, мерзавец, негодяй, гад, иди сюда, ты, говно, ЖОПА!
            Ответить
            • Оборвал твою бирку, выпотрошил все чаинки и развеял по ветру, проверь.
              Ответить

    Добавить комментарий