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

    +137

    1. 1
    2. 2
    3. 3
    static const uint32_t frequencies[] = {
    #include "frequencies.h"
    };

    Запостил: codemonkey, 21 Апреля 2015

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

    • боянище
      Ответить
    • Нормальный код
      Ответить
      • А че бы статик конст уинт... в фрекьюнсис.аш не включить?
        Ответить
        • Возможно, там тупо файл с числами через запятую. И он чем-то другим генерится, куда совсем не хочется добавлять весь этот обвес.
          Ответить
          • На за каким интересом его назвали .h? В таким расширением там должен быть валидный код, я считаю.
            Ответить
            • [:]/||||||||||||||||||||\[:] Растяни меха, баян
              Ответить
            • > На за каким интересом его назвали .h?

              что бы подсветка работала в редакторах.

              > В таким расширением там должен быть валидный код, я считаю.

              я думаю что авторы кода с удовольствием бы воспользовались альтернативными методами импорта данных в код - если бы они существовали.
              Ответить
              • > что бы подсветка работала в редакторах
                Сомнительная необходимось - подсвечивать числа, разделенные запятыми.

                > альтернативными методами импорта данных в код
                Довольно актуальная тема для меня. Была бы возможность - я бы генерировал сразу валидные .цпп и .аш с массивом и экстерн соответственно; в противном случае, наверное, на местном шелле из стандартных утилит, говна и дыма несложно построить альтернативный велик.
                Ответить
                • Переходи на Ди :) Там вроде как можно читать файлы во время компиляции.
                  Ответить
                  • Какая хуйня прелесть
                    я так понимаю ди значит дьявол?
                    Ответить
                  • В ди много ограничений во время компиляции. Даже biginteger не посчитаешь. Так что зови его в Nemerle. Пусть тот скачает с сайта исходники и нагенерит классов на каждую строку в табличке в бд во время компиляции
                    Ответить
                    • Nemerle тоже относительное удовольствие. ООФП какое то
                      Ответить
                      • Ты так говоришь, как-будто это что-то плохое
                        Ответить
                        • Да не особо плохое. Но и не сильно хорошее
                          Ответить
                  • > Переходи на Ди :)
                    Хм-м... Ну, я подумывал об основательном освоении другого языка, но мне стало как-то безумно жалко тех годов страданий с крестами, так что пыл тяги к новым знаниям довольно быстро погас :\
                    Ответить
                • > > что бы подсветка работала в редакторах
                  > Сомнительная необходимось - подсвечивать числа, разделенные запятыми.

                  намекаю: этот файл тоже обрабатывается препроцессором.

                  > я бы генерировал сразу валидные .цпп и .аш
                  > несложно построить альтернативный велик.

                  по моему горькому опыту работы с коммерческими IDE - и GNU make - долго трахаешься, после чего код сверху кажется почти идеалом.

                  нагенерить - это пять минут на перле. или десять на шелле. а вот потом эту генерацию откуда вызвать - или интегрировать с недоделаными dependencies в мэйке - это недели и недели.

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

                  PS народ на одном проекте вообще ход конем сделали: держат данные в бинарном файлах, редактируют в хекс эдиторе и включают в .с через:
                  asm(".incbin \"filename.txt\"\n")
                  Ответить
            • > На за каким интересом его назвали .h?
              Соглашусь, для подобных трюков принято делать расширение .inl, типа inline и всё такое.
              Ответить
    • php пустил метастазы в с
      Ответить
      • void render_page(const std::map<std::string, std::string> &args) {
        #    include "template.h"
        }
        Ответить
        • параметры шаблона через дифайн забыл передать
          Ответить
          • Да они через args доступны. Надо только args переименовать в $_GET для аутентичности.
            Ответить
    • Назвать это нормальним кодом нельзя, но это приемлемое решения, если нужно загружать тот же файл с константами с другого языка. Правда получить регулярками список цифр, если бы файле был static const uint32_t frequencies[] не трудно.
      Ответить
    • Такое используется в небесизвестной whois утилите на линуксах/фряхах.
      Файл data.h
      const struct server_charset servers_charset[] = {
          #include "servers_charset.h"
          { NULL, NULL, NULL }
      };

      Файл servers_charset.h генерится автоматом перед сборкой. ИМХО, очень удобно.
      Ответить

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