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

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    struct Counter{
    	static int k;
    	Counter(){ k++; }
    	~Counter() { k--; }
    };
    int Counter::k = 0;
    #define LOL(x) {string s = #x; Counter c##x; cout<<s.substr(0,1+s.find('['))<<Counter::k<<"]="<<x<<'\n'; }

    Запостил: Abbath, 01 Ноября 2014

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

    • Нулевые элементы массива не показывает. С двумерными массивами не работает. Говно-с
      Ответить
      • показывает.
        Ответить
        • main.cpp|16|error: ISO C++ forbids zero-size array 'ctest'
          Ответить
          • http://ideone.com/LLxM1E
            Ответить
            • Хм, массив неконстантной длины на стеке. Интересно, что скажет компилятор Soul_re@ver.
              А ideone и константный ноль держит: http://ideone.com/MTtr7S.
              Ответить
              • > массив неконстантной длины на стеке
                VLA - это включенное по-умолчанию расширение gcc, придуманное для си. В кресты его тоже до кучи притащили.
                Ответить
                • В C++17 может поставят более логично себя ведущие ARB (Arrays of Runtime Bound)
                  Ответить
                  • > C++17
                    Это будет талмуд на 2к страниц...
                    Ответить
                    • Я не пойму почему они не разобьют стандарт языка и стандартную библиотеку на два документа.

                      Если отбросить описание стандартной библиотеки, сейчас в стандарте около 400 страниц + несколько индексов, сокращённый пересказ грамматики и отличия от С.
                      Ответить
                      • >не разобьют стандарт языка и стандартную библиотеку
                        Потому что и там, и там стандарт. А без знания стандартной либы начнут плодиться стандартные велосипеды.
                        Ответить
                    • >Это будет талмуд на 2к страниц...
                      То есть ведущие крестоводы тоже считают что подобный экстенсивный путь развития С++ — дорога в неконтролируемый сверхусложнённый ад?!

                      Ведь тут имеется такой немаловажный нюанс: с ростом числа фич, их сочетания растут как факториал, то есть практически экспоненциально.
                      И ни один человек каким бы он умным не был, ни один комитет гениев не сможет предусмотреть и просчитать взаимодействие фич друг с другом. Да что говорить о людях? Даже детерминированные машины Тьюринга не очень любят экспоненциальную сложность.
                      Потому какие дырки и нестыковки языка вылезут в каких-то аномальных комбинациях — никому доподлинно неизвестно.
                      Ответить
            • Гццизм же!

              http://govnokod.ru/17002#comment252791
              Ответить
    • А зачем вообще этот счётчик? Автор хотел сообщать о номере просматриваемого элемента куда следует?
      #define LOL(x) {Counter c##x; cout<<#x<<"="<<x<<'\n'; log(Counter::k); }
      Ответить
    • Бесит, что нельзя в классе писать static int k=0;
      Ответить
      • Кокомпоновщикокопроблемы...

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

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