1. Си / Говнокод #19691

    −50

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    static int PC=0;
      ++PC;
    
      if (PC==1331) {
        PC=1331;
      }

    Часто так делаю. Надо.

    Запостил: TarasB, 25 Марта 2016

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

    • Не понял пятой строки с 4 по 6-ю. Поясни.

      С остальным в принципе понятно: иметь статическую переменную локальной (это же в функции, атоб не собралось) области видимости и увеличивать ее при каждом вызове это ок

      Я сам так делаю
      Ответить
    • Сколько потоков в программе?
      Ответить
      • фу-фу-фу
        только не говори мне что он PC изменяет из другого треда

        вот так прямо
        без всякой синхронизации
        фуууууу
        Ответить
      • А много ль корова дает молока?
        
        А мы молока не видали пока....


        Может он просто параноик.
        Ответить
        • >А мы молока не видали пока....
          Козёл конечно сильно задроченный, но жить будет.
          Ответить
    • Более лучше
      if (PC=1331) {
      PC==1331;
      }
      Ответить
      • ты знал наверное что Тарас паскалист, и просто хотел сделать ему комплимент
        Ответить
    • Украду гипотезу Борманда: «Оператор обновления данных. А то вдруг DRAM хуёво регенерируется...»

      Отсюда: http://govnokod.ru/19663#comment317880
      Ответить
      • Я где-то слышал что память нужно переодически обновлять, иначе кондеры разрядятся
        Потому то тут то там в моем коде вы можете встретить бессмысленные, на первый взгляд, присваивания переменным.
        Но я просто стараюсь по-чаще обращаться к памяти
        Ответить
        • Rowhammer заработаешь.
          Ответить
        • всё правильно, только ещё кэш не забудь сбрасывать почаще, иначе проебёшь все данные из оперативки
          Ответить
          • И еще из буфера проталкиваться в кеш
            Для этого я частенько делают fence
            Ответить
    • О, а я так же делал, если надо было скипнуть определенное количество итераций цикла. На пятой строке должен стоять брейкпоинт.
      Ответить
      • Use conditional breakpoints, Luke.
        Ответить
        • Так проще, чем кондитионал. Не надо делать лишние мышеклики.
          Ответить
          • лол, так ты реально срешь в код чтобы упросить дебаг вместо того чтобы научиться пользоваться своим дебагером и делать кондишенал бряки??
            Ответить
            • Научи делать кондишенал бряки без мышекликов и с меньшим нажатием клавиш, чем с таким высиранием кода. Кстати, а правда, что кондишинл бряк на самом деле сначала брякается, а потом проверяет условие?
              Ответить
              • Почитай мануал к своему отладчику!
                Ты наверное удивишься, но например в gdb люди вообще без мышы работают

                >>сначала
                Это зависит от условия и реализации и машины. Некоторые виртуальные машины поддерживают некоторые кондишенал бряки. В "голом" x86 бряка может делаться через замену первого байта инструкции инструкцией 0xCC (int 3), и она конечно брякается всегда.

                Есть еще бряки через регистры процессора (DR* кажется), там тоже условия нельзя ставить (только адрес).
                Ответить
                • Привет из vs2013. Тут даже intellisense не работает в conditional breakpoint'ах. Порой правда проще налепить простое условие в коде и перебилдить.
                  Ответить
                  • Дебажа свой код вы расписыветесь в том, что не понимаете как он работает (Дейкстра)
                    Ответить
                    • Иногда проще пройтись дебаггером, чем вдумываться в написанное (привет легаси).
                      А еще иногда хочется посмотреть что прилетело из сети например.
                      Ответить
                      • >>вдумываться
                        не хочешь вдумываться? Ты разве не инженер-программист?
                        Ответить
                    • > Дебажа свой код, вы расписыветесь в том, что не понимаете как он работает (Дейкстра)

                      Ко-ко-ко.
                      Как понимание написанного кода поможет найти опечатку?
                      Ответить
                      • > опечатку
                        Или коррапт памяти от соседнего модуля...
                        Ответить
                      • Все вопросы к Дейкстре:)

                        Опечатку найдет компилятор. Или юнит-тесты (хотя Дейкстра о них и не знал).

                        Да нет, я тоже часто дебажусь и профилируюсь, все же люди. Великий просто хотел сказать что его бесят хомячки, которые сначала пишут код, потом запускают его под дебагером и смотрят что не работает. "ага! Вот тут падает. Попробую-ка я вписать сюда if (foo != bar)"
                        Ответить
                      • If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with.

                        https://en.wikiquote.org/wiki/Edsger_W._Dijkstra
                        Ответить
                        • Жопа в том, что баги не всегда твои и не всегда в твоём коде. Вот в таких случаях дебаггер всё-таки выручает (ибо понять этот чужой код нет ни времени ни возможности).
                          Ответить
                          • Слушайте, он это сказал в 1972м году, ну
                            Ответить
                            • Сам принёс, сам всех мордой тыкнул и теперь валишь всё на мёртвых классиков. Милый подход. Почти как у Сёмы.
                              Ответить
                    • 640КБ должно быть достаточно для каждого Билл Гейтс
                      Ответить
    • "не, не надо" сказал компилятор...
      Ответить
    • Тю. Все ж видели как nopами асмо-программы ровняли для паддинга.

      Даже в функцианальщине noop-функции повсеместно юзаются.
      Ответить

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