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

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    #include <iostream>
    #include <typeinfo>
    
    class S
    {
    public:
    	S* _next;
    };
    
    int main (int argc, char **argv)
    {
        for (S* sw1 = new S(), sw2 = sw1->_next;;)
    	{
    		std::cout << typeid(sw1).name() << std::endl;  
    		std::cout << typeid(sw2).name() << std::endl;  
    		break;
    	}
    
        return 0;
    }

    какого хрена этот говнокод не хочет скомпилиться :)

    Запостил: ASD_77, 26 Июля 2017

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

    • о нет. Это гавно всеже может скомпилиться если захочет :)

      #include <iostream>
      #include <typeinfo>
      
      class S
      {
      public:
      	S* _next;
      };
      
      
      int main (int argc, char **argv)
      {
          for (auto sw1 = new S(), sw2 = sw1->_next;;)
      	{
      		std::cout << typeid(sw1).name() << std::endl;  
      		std::cout << typeid(sw2).name() << std::endl;  
      		break;
      	}
      
          return 0;
      }
      Ответить
    • код не компилится потому что ТС упорот.
      for (S* sw1 = new S(), *sw2 = sw1->_next;;)
      Ответить
      • Скорее потому что керниган и ричи думали лишь о том, как бы подъебать пользователей, когда придумывали язык.
        Ответить
        • ага. согласкен :)
          Ответить
        • да потому что сначала делали компилятор, а потом стандартизовали его поведение (вместе с его чудесными багами фичами). per rectum ad astra, так сказать.
          Ответить
          • А когда-то стандарт шёл впереди наличия (иногда более чем одного) компилятора языка?
            Ответить
            • Не уверен, что правильно понял вопрос, но вроде в нулевых плохая поддержка плюсов в компиляторах была нормой, а не исключением.
              Ответить
              • Суть в том, что обычно сначала появляется язык с одним или более компиляторов/интерпретаторов, и когда он становится достаточно полезным и обрастает различными "расширениями", заинтересованные люди собираются и стандартизируют его, чтобы писать портабельный код было легче.

                Я не припомню языка, который был бы сначала стандартизирован, а потом впервые реализован. Вот и спрашиваю, есть ли такой. PL/I?
                Ответить
                • возможно, я неправильно выразился.

                  Как должно быть: продумана система типов; реализована в компиляторе; проверено - работает; пишем стандарт
                  Как было в си: реализовано объявление одной переменной; реализовано объявление указателя; реализовано объявление массива; реализовано объявление нескольких функций за раз (тут как раз недочет, на который забили); стандартизировано поведение как есть
                  Ответить
                • c# как минимум :)
                  Ответить
                  • У C# есть стадарт?
                    Ответить
                    • Майкрософту лучше без стандарта, ведь когда он есть, они прилагают все усилия подальше от него уйти
                      Ответить
                      • Самое забавное, что это не менее верно для стандартов, которые они же сами и лоббировали.
                        Ответить
                        • Стандарты тормозят прогресс.
                          Ответить
                          • Почему зеленый? Оно так и есть, пора запретить стандартизаторов, особенно после стандарта крестов.
                            Ответить
                • > был бы сначала стандартизирован, а потом впервые реализован
                  Случаем не Ada?
                  Ответить
                  • > Случаем не Ada?

                    Я тоже про неё вспомнил, но из вики-странички сложно сказать. Смутно припоминаю, что там какая-то комиссия выбирала языки, и у Вирта, Хоара и Дейкстры бомбило потом, что выбрали не их вариант паскаля, а переусложнённую Аду (пруфы сходу не нашёл). Врядли бы её стали стандартизировать до того, как её выбрали для военных, а на язык без компилятора комиссия тоже бы врядли смотреть стала.

                    Вот,
                    https://en.wikipedia.org/wiki/High_Order_Language_Working_Group, пилить начали в 1975
                    Первый стандарт Ады — 1983.
                    Ответить
      • Какой еблан придумал вообще эту идиотскую звёздочку, нельзя было как в сишарпике, где она всегда относится к типу?
        Ответить
        • И квадратные скобочки тоже.
          Ответить
          • Ага, с синтаксисом типов массивов и указателей эпичный фак-ап вышел. Интересно, где-нибудь есть внятное объяснение, почему эту тупость со спиральным правилом ввели? Не смогли придумать, как по-другому записывать указатели на функции?
            Ответить
        • А в сисярпе есть звездочка?
          Ответить

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