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

    +64

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #include <iostream>
    #include <typeinfo>
    
    struct Test {};
    
    int main()
    {
    	std::cout << typeid(int).name() << ", " << typeid(Test).name() << std::endl;
    }

    Очередные КРЕСТОПРОБЛЕМЫ.

    MSVC: int, struct Test
    GCC: i, 4Test

    http://ideone.com/KPsIlP

    Вот что говорит стандарт:

    The class type_info describes type information generated by the implementation. Objects of this class effectively store a pointer to a name for the type, and an encoded value suitable for comparing two types for equality or collating order. The names, encoding rule, and collating sequence for types are all unspecified and may differ between programs.

    RTTI ещё бесполезнее, чем я думала.

    Запостил: someone, 18 Января 2014

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

    • Для gcc есть вот такой костылик: http://ideone.com/75t66F
      Ответить
      • Чтобы не потерялось, если удалят с ideone:
        template <class T> std::string typeNameOf(const T & obj) {
            int status;
            std::auto_ptr<char> result(abi::__cxa_demangle(typeid(obj).name(), 0, 0, &status));
            if (status != 0)
                throw std::runtime_error("Unknown type");
            return std::string(result.get());
        }
         
        template <class T> std::string staticTypeName() {
            int status;
            std::auto_ptr<char> result(abi::__cxa_demangle(typeid(T).name(), 0, 0, &status));
            if (status != 0)
                throw std::runtime_error("Unknown type");
            return std::string(result.get());
        }
        Ответить
        • А почему-бы type_info в функцию не передавать? В 2 раза меньше функций будет.
          Ответить
          • demangleTypeName(typeid(p).name())?
            Ответить
          • Ну или запускать темплейт с входным параметром их под процедурного
            Ответить
    • А сделан такой манглинг скорее всего для уменьшения размера экзешника. Красивые названия типов мало кому нужны, разве что для дебага, а место при включенном RTTI они будут занимать всегда.

      Кому очень надо - юзает приведенный выше костылик или пропускает лог программы через c++filt -t
      Ответить
    • показать все, что скрытоБитва при Карансебеше

      В 1788 году австрийский император Иосиф-II решил ни с того ни с сего освободить Балканы от турецкого ига – намерение достойное христианина, но имевшее в основе, разумеется, не благочестивые намерения, а стремление распространить влияние Австрии на так называемое «подбрюшье Европы». Собрав огромную армию, австрийцы перешли границу.
      После маршей, переходов, больших и малых схваток с переменным успехом, обе стороны готовились к решающей битве.

      В безлунную ночь на 19 сентября 100 тысяч австрийцев шли на сближение с 70- тысячной турецкой армией с целью дать бой, который должен был определить судьбу войны.
      Ответить
      • показать все, что скрытоРота гусар, шедшая в авангарде австрийцев, переправилась через небольшую речку Темеш, вблизи города Карансебеш, но на берегу турецких войск не оказалось – они еще не подошли. Однако, гусары увидели цыганский табор. Обрадованные возможностью подзаработать, цыгане предложили гусарам подкрепиться после переправы – за деньги, разумеется. За несколько монет кавалеристы купили у цыган бочку спирта и приступили к утолению жажды.

        Тем временем, в этом же месте переправились несколько пехотных рот, на долю которых спирта не досталось, а пить хотелось…Началась перебранка между гусарами и пехотинцами, в ходе которой один кавалерист то ли нечаянно, то ли от злости выстрелил в солдата. Тот рухнул, после чего началась всеобщая свалка. В драку вмешались все гусары и все пехотинцы, находящиеся поблизости.

        И перепившиеся гусары, и изнывающая от жажды пехота, разгоряченные мордобоем, не желали уступать. Наконец, одна из сторон взяла вверх – побежденные позорно бежали на свой берег, преследуемые ликующим противником. Кто был разбит? – история умалчивает, точнее, сведения противоречивы. Вполне возможно, в одних местах победу одержали гусары, а в других пехотинцы. Как бы то ни было, подходящие к переправе войска вдруг увидели испуганных бегущих солдат и гусар, измятых, с синяками, в крови… Сзади слышались победные крики преследователей.
        Ответить
        • показать все, что скрытоМежду тем, гусарский полковник, пытаясь остановить своих бойцов, заорал по-немецки: “Halt! Halt!” Так как в рядах австрийской армии было много венгров, словаков, ломбардцев и других, плохо понимающих немецкий язык, то некоторым солдатам послышалось – «Аллах! Аллах!», после чего паника стала всобщей. Во время всеобщей беготни и шума, несколько сот кавалерийских лошадей, находившихся в загоне, вырвались из-за загородки. Так дело происходило глубокой ночью, все решили, что в расположение армии ворвалась турецкая кавалерия. Командир одного корпуса, услышав грозный шум «наступающей конницы», отдал приказ артиллеристам открыть огонь. Снаряды рвались в толпе обезумевших солдат. Пытавшиеся организовать сопротивление офицеры строили свои полки и бросали их в атаку на артиллерию, в полной уверенности, что воюют с турками. В конце концов в бегство обратились все.

          Ничего не понимающий император, тоже пребывающий в уверенности, что турецкая армия атаковала лагерь, пытался овладеть обстановкой, но бегущая толпа сбросила его с коня. Адъютант императора был затоптан. Сам Иосиф спасся, прыгнув в реку.

          К утру все стихло. Все пространство было усеяно ружьями, мертвыми лошадьми, седлами, провиантом, разбитыми снарядными ящиками и опрокинутыми пушками – одним словом, всем тем, что бросает разбитая наголову армия. На поле самого странного сражения в истории человечества остались лежать 10 тысяч мертвых солдат – то есть, по числу погибших битва стоит в ряду крупнейших сражений человечества (в знаменитых битвах при Гастингсе, при Азенкуре, при Вальми, в Долине Авраама и многих других число погибших гораздо меньше). Австрийская армия перестала существовать, так как оставшиейся в живых в ужасе разбежались.
          Ответить
          • показать все, что скрытоЧерез два дня подошла турецкая армия. Турки с удивлением рассматривали груды трупов, бродили среди израненных, стонущих в бреду солдат, ломая голову над вопросом – какой неизвестный противник разгромил наголову одну из самых сильных армий мира и спас Турцию от поражения. Христианский мир не сумел приобрести Балканы. Австрия не стала сильнейшим государством Европы, не смогла остановить французскую революцию, мир пошел по пути Франции…
            Ответить
    • Это попытка оправдать MSVC после ГК Тараса?
      Ответить
    • rtti ввели в основном чтобы исключения работали. dynamic_cast не нужен ни разу не приходилось использовать. type_info в основном для проверки равенства типов в рантайме используют, см. например boost::any.

      Огромная кодовая база llvm и clang компиляется без поддержки RTTI и исключений.

      А зачем вам rtti, @someone?

      См. также abi::__cxa_demangle
      Ответить
      • > См. также abi::__cxa_demangle
        http://govnokod.ru/14381#comment211846
        Ответить
      • > dynamic_cast не нужен ни разу не приходилось использовать.

        я только раз делал нечто в духе: есть иерархия из Н интерфейсов; найти инетерфейс, чем ближе к листьям иерархии - лучше, который реализуется входным объектом; вызвать метод этого интерфейса.

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

      велкам ту зе клаб.
      Ответить
    • > RTTI ещё бесполезнее, чем я думала.
      http://tinyurl.com/fuck-rtti
      Забавно, но я обнаружил, что RTTI в vs2003 отключен по умолчанию где-то через год пользования средой разработки - как только впервые попробовал им воспользоваться.
      Ответить
    • показать все, что скрытоКрестоблядка? Откуда бабы в крестах? Гейдев чтоли?
      Ответить
      • >Откуда бабы в крестах?
        С воли.
        Ответить
        • там есть женское отделение?
          Ответить
        • павла?
          Ответить
          • http://ru.wikipedia.org/wiki/Кресты
            Ответить
            • В ссылку не ходил, но шутку оценил.

              PS: Сталину бы наверняка понравилось слово гиперссылка.
              Ответить
              • Ссылка в другую звездную систему быстрее скорости света.
                Ответить
              • Это давно заюзали в серии картинок "Сталин как":
                http://t1.gstatic.com/images?q=tbn:ANd9GcSuXCy4kMD6P9upG-2RB-YWVc9MNeW3nWauKXMdot1XeUsESOKXmg
                Ответить
      • Мне иногда кажется что программисты - звери. К ним зашла девушка, а они её метлой. А потом удивляются, почему им не дают. Интересно, как Семён (ЯснаяЛиса) это терпит? Нужно очень сильно любить программирование, чтобы терпеть к себе такое отношение.
        Ответить
        • Причем на ее приход такая бурная реакция только у нашего анонимного друга.

          > Нужно очень сильно любить программирование, чтобы терпеть к себе такое отношение.
          А вдруг ей это нравится? Со спецом заходит сюда, пишет о себе что-нибудь из-под анонимба, ждет пока народ пересрется, а потом читает и улыбается :)
          Ответить
        • Я не гоню - мне дают. А за других я не беспокоюсь
          Ответить
          • > мне дают
            Типа доказал всем, что ты альфасамец? :)
            Ответить
            • Только не нужно слать фотку с супом.
              Ответить
              • Почему? Девушки дают многим, а вот суп готовят только избранным ;)
                Ответить
                • Ну представляешь Лорд Клиган постит фотку с датой и супом, а на её фоне какая-то порнография
                  Ответить
            • А меня должно волновать ваше мнение?)
              Ответить
              • Ну ты же зачем-то об этом написал. Значит волнует.
                Ответить
                • ) А завтра я напишу, что не видел голую женщину 5 лет, если это будет в тему)
                  Ответить
                  • Ее не обязательно видеть.
                    Ответить
                    • тогда в чем удоволствие?
                      Ответить
                      • Ты в темноте не пробовал чтоли?
                        Ответить
                        • занимаясь сексом в темноте ты лишаешь себя большей части удовоствий
                          Ответить
                          • Сразу видно, что ты малоопытный.
                            Темнота располагает к раскрепощению, кроме того, лично мне было бы стыдно смотреть на голую девушку, и я уверен, что этот стыд будет взаимным - это в человеке от природы. Не нужно воспринимать секс как средство получения банального физического насладжения - это один из способов узнать человека ближе. Очень хорошо написано об этом у Станислава Лема: заниматься сексом ради того, чтобы жизнь не казалась скучной , это все равно, что пригорошнями есть соль и перец, чтобы еда не казалась пресной. Наивно смотреть порнофильмы и делать выводы опираясь на увиденное - там все искажено и изуродовано.
                            Ответить
                            • В какой книге?
                              Ответить
                              • В короткой автобиографии, в книге "Маска. Не только фантастика" С. Лем
                                Ответить
                            • >Темнота располагает к раскрепощению

                              я достаточно раскрепощен и без этого.

                              >кроме того, лично мне было бы стыдно смотреть на голую девушку, и я уверен, что этот стыд будет взаимным

                              Просто ты не умеешь принимать себя и людей такими, какие они есть. Стыд абсолютно бесполезен и неприемлем.

                              >это один из способов узнать человека ближе

                              ))) у тебя выражена потребность к слиянию. Не нужно усложнять - секс - это способ получить удовольствие. А познание человека не зависит от пола)

                              >> заниматься сексом ради того, чтобы жизнь не казалась скучной

                              лол. А я думал, что люди занимаются сексом, потому что хотят заниматься сексом. Если твоя жизнь тебя не устраивает - меняй это.
                              Ответить
                            • > ты малоопытный
                              > мне было бы стыдно
                              /0

                              победи в себе и этот комплекс, прими свое тело каким есть, пригодится в жизни
                              Ответить
                              • Свое-то тело я принимаю. Создается впечатление, что Вы вообще не читали пост. Хотя, что я кому доказываю, если вон один товарищ даже стыд отрицает... К слову, человек отличается от всех других животных способностью краснеть - возможно, это и делает его человеком. Подумайте над этим.
                                Ответить
                                • ты важнее животного?
                                  Ответить
                                  • Да - разумеется, важнее. Я могу убить льва, утолить им голод и это будет честю для него, ибо он станет частью меня.
                                    Ответить
                                    • >>Да - разумеется, важнее. Я могу убить льва, утолить им голод и это будет честю для него, ибо он станет частью меня

                                      Какое у тебя чувство собственной важности)
                                      Лев тоже может утолить голод тобой, и это так же будет честью для тебя
                                      Ответить
                                      • Не будет, ибо лев не станет от этого человеком.
                                        Ответить
                                        • А чем человек лучше льва? Тем что ты человек а не лев?)
                                          Ответить
                                          • Тем, что человек РАЗУМЕН и обладает самосознанием, глупый отрок! Тебе компы львы изобрели, со своим безмозглым могуществом, силой и статусом царя, или все же люди?
                                            Ответить
                                            • >>Тем, что человек РАЗУМЕН и обладает самосознанием, глупый отрок!

                                              Ты считаешь, что твоя разумность дает тебе право есть льва?

                                              >>Тебе компы львы изобрели, со своим безмозглым могуществом, силой и статусом царя, или все же люди?

                                              Я так понимаю ты без компа и день не проживешь) Ты считаешь, что НТП делает тебя выше льва?
                                              Ответить
                                              • ты споришь ради спора( Иногда полезно переступить через свое упрямство, по крайней мере, чтобы не выглядеть глупо.
                                                p/s/ Пару дней разбирал пожилой телевизор, извлек пару твк и сразу сунул их в сеть. Под рукой как раз оказался оксидный конденсатор от китайского приемника, мкф на 300 - зарядился, сука.
                                                Ответить
                                                • >>ты споришь ради спора

                                                  Я спорю, потому что мне это нравится. А ты?)

                                                  >>Иногда полезно переступить через свое упрямство, по крайней мере, чтобы не выглядеть глупо.

                                                  C моей стороны ты выглядишь глупо. Но ведь ты в это не веришь

                                                  Так ты ответишь, или твой способ спорить - переход на личности?
                                                  Ответить
                                                  • Спасибо, я уже сыт)

                                                    [Trollface.jpg]
                                                    Ответить
                                                    • Что и требовалось доказать - ты психически неполноценен
                                                      Ответить
                                                      • Кому требовалось доказать? Нет, просто я понял, что ты упорот мы друг друга не понимаем. Самое ужасное, что ты останешься при своем мнении. Я тоже не изменю своего.
                                                        Ответить
                                                        • >>Самое ужасное, что ты останешься при своем мнении

                                                          Самое ужасное, что ты не понимаешь мнения других
                                                          Ответить
                                                • > зарядился, сука
                                                  А теперь заряди через диод и сравни :)

                                                  P.S. Давай не будем поднимать этот тред? :)
                                                  Ответить
                                                  • Дак я и говорю, что признаю свою ошибку(
                                                    Я говорил, что оксидный конденсатор нельзя зарядить переменным током)
                                                    Ответить
                                          • >>>А чем человек лучше льва? Тем что ты человек а не лев?)
                                            Читаю это срач левЪ vs человек и вспоминаю старую детскую загадку:
                                            [ложит руку на плечо]
                                            Ты ведь знаешь чем отличается левЪ от пидараса?
                                            Ответить
                                            • На плечо? Только и всего? Я думал, засунуть соседу руку в трусы и не моргнув глазом изречь: "Кстати, что тебе известно о гомосексуализме львов?"
                                              Ответить
                                              • >> Я думал, засунуть соседу руку в трусы
                                                Начальник!!! Хуле вы меня с гомосеком поселили, он же пидар полный!
                                                Ответить
                                                • А вдруг начальник сделает то же самое, со словами "ой, неженка какой нашелся!" ?
                                                  XD
                                                  Ответить
                                            • Нет, дяденька
                                              Ответить
              • Есть тут люди, которых не волнует ничьё мнение. Обычно постят гоатсе и объявления про кавказцев.
                Ответить
                • Нет, их больше всего волнует мнение и внимание людей
                  Ответить
                  • "Напишу-ка я сотню сообщений... Вдруг он заметит их, обратит на меня внимание и похвалит..."
                    Ответить

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