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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    char *ptr1;
    char *ptr2;
    //...
    try {
        throw ptr2 - ptr1;
      }
      catch (int e) {
        std::cout << "exception addr dif" << e << std::endl;
      }

    Запостил: Говногость, 13 Июня 2010

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

    • Исключение головного мозга.
      Ответить
    • показать все, что скрытов ранних версиях питона нормально же было кидать исключением строку...
      Ответить
    • Разность указателей - это не int. Ну и конечно, было бы более труЪ упаковать это дело в потомка std::exception.
      В целом говнокод, но в лёгкой форме. Работает и в целом понятно как.
      Ответить
      • разность указателей это ptrdiff_t, по моему в 32 разрядных платформах он равен int...
        Ответить
        • хуёво гуглишь, уволен...
          Ответить
          • я прям копипастом сча заговорю

            #ifndef _PTRDIFF_T_DEFINED
            #ifdef _WIN64
            typedef __int64 ptrdiff_t;
            #else
            typedef _W64 int ptrdiff_t;
            #endif
            #define _PTRDIFF_T_DEFINED
            #endif

            извиняйся!!!
            Ответить
            • Сосни хуйцы, обезьянка. Такие магросы говнокодеры тоннами высерают...
              Ответить
              • это из crt VS2010...
                Ответить
                • Открой себе чудный мир за пределами творений MS , школьничек!
                  Ответить
                  • Например, Lazarus
                    Ответить
                  • внимательно читай мои посты, если умеешь читать, а если не умеешь, хотя бы находи знакомые буквы...
                    в данный момент я пишу игры на iPhone, когда-то писал под PS3...
                    Ответить
                    • и чё с того, школьник пишет под яблочную паделку...
                      Ответить
                    • > в данный момент я пишу игры на iPhone

                      Зачем тебе тогда с++? Юзай obj-c.
                      Ответить
                      • язык на самом деле не сложный, есть свои фишки, но как только в проекте становится больше 5 файлов, можно сразу вешаться (либо пополнять толпу идущих в купертино сажать на кол Стива Джобса)...
                        ну и наши проекты портируются еще на десяток платформ, исправляя код в десятке файлов...
                        Ответить
                        • > но как только в проекте становится больше 5 файлов, можно сразу вешаться

                          а что не так?
                          Ответить
                          • ну хотя бы то, что любому объекту можно послать любое сообщение и никто нечего не скажет пока программа не вывалится на его обработке...
                            ну и с памятью уже не поработаешь как в С++...
                            Ответить
                            • это я всё знаю, но как эот относится к "больше 5 файлов", я не понял.

                              а насчёт "вывалится по обработке" - юзай юнит-тесты, что ли

                              > ну хотя бы то, что любому объекту можно послать любое сообщение и никто нечего не скажет пока программа не вывалится на его обработке

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

                                  то-то с++-поделия постоянно вылетают, оказца с++ники не любят юнит-тесты.
                                  проверка ошибок времени компиляции не спасает от ошибок логических, от человеческого фактора (т.е. когда синактически легитимное являеся семантически ошибочным) - поэтому всегда нужно юзать юнит-тесты, какой бы язык не был. а раз ты УЖЕ юзаешь юнит-тесты, то как бы нет смысла пиздеть о том, что методы диспатчатся и вылетают в рантайме - это всё ловится юнит-тестами
                                  Ответить
                                  • в С++ их роль исполняет ассерт...
                                    сам часто думаю об юнит тестах, но еще не слышал о случаях успешного применения в геймдеве...
                                    да и сроки обычно не позволяют... в бизнес софте функцию на 10 строк могут полгода писать и тестировать, в геймдеве за полгода нужно выдать игру на бетатест...

                                    > это всё ловится юнит-тестами
                                    но все же вопрос остается открытым, зачем выбирать язык который не может отлавливать простейшие синтаксические ошибки??
                                    Ответить
                                    • > но все же вопрос остается открытым, зачем выбирать язык который не может отлавливать простейшие синтаксические ошибки??

                                      я сам на нём не кодил, но подозреваю, что по уму можно было бы решить проверкой ИДЕ кода на ввод методов, которых нет в базе ("интеллисенсе") и выводом предупреждений...
                                      Ответить
                                      • то есть сначала я должен выбрать заведомо бракованный компилятор, а потом искать к нему иде? маразмом не попахивает?
                                        Ответить
                                        • > то есть сначала я должен выбрать заведомо бракованный компилятор

                                          с чего это компилятор бракованный? такова сущность языков с динамическим диспатчингом

                                          > ты реально не в теме... причем тут ввод?

                                          я бы тоже спросил, при чём тут ввод. про какой ты ввод? ввод чего и ккуда?
                                          Ответить
                                          • зачем это если программа все равно компилируется... я понимаю что это фича, но это фича в питоне или яваскрипте, но ни как не в компилируемом языке...
                                            Ответить
                                            • а почему бы нет
                                              Ответить
                                              • если ошибку можно найти на этапе компиляции - это нужно сделать... компилятор не должен позволять писать заведомо неправильный код...
                                                потому как цена ошибки в рантайме в десятки раз больше...
                                                Ответить
                                                • Именно. Строгая типизация, хороший помощник программиста. Кстати, при чём тут С++ со своей унылой типизацией...
                                                  Ответить
                                                  • а разве у него не строгая типизация?
                                                    Ответить
                                                    • Откуда бы она взялась... Страуструп про вывод типов даже не знал.
                                                      Ответить
                                    • > в С++ их роль исполняет ассерт...
                                      сам часто думаю об юнит тестах, но еще не слышал о случаях успешного применения в геймдеве...

                                      тебе не нравятся вылеты в рантайме... а ассерты как раз и есть вылеты в райнтайме... в случае с юнитами иначе - ты изменил код, затем запустил тест на эту часть кода - и сразу же видишь, успешно код изменён, или есть регрессии... а в случае с ассертами надо полностью загружать программу, с ней работать, ждать пока обвалится, решать всё вручную силами живых бета-тестеров...

                                      в случае геймдева сложным на такую проверку является интеракция человека (движение там)... а так типа код нахождения пути или АИ можно вполне покрывать юнит-тестами
                                      Ответить
                                      • ты реально не в теме... причем тут ввод? AI это скрипты, часто на Луа или других языках которые ты сильно уважаешь (даже лисп встречается)...

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

                                        но я все равно жду удачного опыта внедрения, чтоб потом попробовать самому...
                                        Ответить
                        • там вроде всё то же, что и в си и с++ в плане ёбли с файлами

                          после си++ с его кривыми инклюдами я думал тебе ничего не должно страшно
                          Ответить
                        • >как только в проекте становится больше 5 файлов
                          С с++ также.
                          Ответить
                      • я уже отвечал здесь на этот вопрос...
                        Ответить
        • А на 64-битных не равен.
          Ответить
          • да, и это я указал...
            Ответить
            • я к тому, что раз не везде ptrdiff_t равен инту, то и закладываться на это нельзя. Вообще никогда.
              Ответить
              • С++дрочерам это не понять...
                Ответить
              • ну я с этим и не спорю...
                Ответить
                • а зачем ты тут что-то говоришь, если со всем согласен?
                  Ответить
                  • С++никам надо высказаться. Их каждый день имеют в попец, а это стресс, сам понимаешь...
                    Ответить
                    • понимаю. сам С++ник. ты тоже поплач. раскажи о своих проблемах. ты не один. ты в кругу своих.

                      я вот, дрочу на С++ и ничего не могу с собой поделать. уже мозоли и волдыри. одна рука накаченая, а другая тощая. а в глазах то как темнеет в пиковые моменты. и каждый день себя карю в этом... а ещё стыдно перед мамой. но ничего сделать с собой немогу...
                      Ответить
                      • Этим дрочерам скоро клава в жопу пролезет
                        Ответить
                        • скорее "их" мелкий скоро между клавишами будет пролазить.
                          Ответить
                          • А фарш сегодня заебись получился кстати.
                            Ответить
    • показать все, что скрытоС++ дрочилки! А вы слышали, что в новом стандарте он разденется?
      Ответить
    • БАБУИНЫ №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№333300000 0000000000000000022222222222222222222222 22222222222222222"*(_!;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;№(((((;ЩЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ ЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫыы
      Ответить
    • Рискну предположить, что в исходном варианте try и catch расположены не рядом. Иначе автору — первый приз за говнокод.
      Ответить

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