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

    +10

    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
    //В mathc.hpp:
    typedef float import (float);
    
    //В неком cpp функция:
    float cm() {
            import calcFpu;
           //...
            float src = //...
            float res = calcFpu(src);
            return res;
    }
    
    //В mathc.cpp:
    void calcFpu(float){
    //...
    void calcSSE(float){
    //...

    Мои глаза... В перлы.
    http://ideone.com/RBAMyv

    Запостил: LispGovno, 27 Ноября 2012

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

    • Дайте угадать. calcFpu() возвращает результат через регистр ST(0), а написана на асме, поэтому пофигу, какой тип результата писать в прототипе. Пущай будет void, чтобы нубы её не вызывали.
      Ответить
      • показать все, что скрытоДжуниор недавно не справился. Даже void не понадобился. Спросил: "А import - это стандартное ключевое слово С++ или расширение gcc?" Что ему ответить?
        Ответить
        • У нас недавно был ГК со сравнением строк в сишке оператором ==
          Стало быть, в этом ГК в C++ появилась модульная структура. Страшно представить, что же в следующем коде будет...
          Ответить
          • В сишке тоже почти без изменений работает:
            http://ideone.com/kl64iU
            Забавно, но кресты оказались менее строгими, чем С в данном случае.
            Ответить
            • натуральное крестоблядство
              Ответить
              • Разумеется. Паскаль бы посчитал, что в шестой строке объявлена процедурная переменная и уронил бы программу на девятой строке, потому что она не инициализирована.
                Ответить
            • Но в сишке же нет перегрузки функций, потому и нельзя объявить функцию, возвращающую другой тип результата.
              Крестоблядское name mangling учитывает только типы входных параметров, но не результата, поэтому в крестах float calcFpu() и void calcFpu() отобразятся на одно внешнее имя.
              Ответить
    • Если честно, смахивает на какую-то искусственную хуету. Я понимаю макачить, копипастить и велосипедить... Но это?
      Ответить
      • >велосипедить
        Автор свелосипедил using namespace.
        Ответить
        • Имелось в виду - автор "изобрел" "ключевое" слово import?
          Т.е. чтобы использовать calcSSE() нужно написать import calcSSE. КПЦ. Мой мозг порвало. Я уж думал, что будет красивая реализация с указателями на ф-ции и выбором нужной ф-ции в зависимости от архитектуры. Реально говно. Плюсую.
          Ответить
      • В стандартных библиотеках языков программирования и не такие перлы можно найти.
        Ответить
        • Какую библиотеку курнуть посоветуете?
          Ответить
          • Даже не знаю. Мне хватило того, что в Турбо Паскале джампы в середину инструкций, чтобы сэкономить на спичках.
            Ответить
            • По-моему, если функция/класс/модуль имеет удобный интерфейс и работает без ошибок, то без разницы какое говно у нее внутри.

              За исключением, конечно, тех случаев, когда функция с большой вероятностью изменится.

              Но если писать по-правилу "одна функция - одна простая задача / один класс - одна простая задача", то и изменения скорее всего не понадобятся.

              За исключением, конечно, тех случаев, когда невозможно разбить какую-либо сложную сущность на более простые.
              Ответить

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