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

    +53.4

    1. 1
    void (* signal(int __sig, void (* __func)(int))) (int)

    Объявление типа, представляющего собой указатель на функцию, возращающей указатель на функцию (может я не так понял?) из хедера signal.h.

    Запостил: Говногость, 24 Сентября 2009

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

    • Карфаген должен быть разрушен
      Ответить
    • Все вопросы к K&R
      Ответить
    • во первых, это баян
      во вторых, автор - крирворукий ламер
      Ответить
    • Нормальный код! Если тупите и пне понимаете ЧТО там написано и ДЛЯ ЧЕГО оно так сделано - нечего ругаться!
      Ответить
      • показать все, что скрытокод нормальный, да язык говно
        иначе было бы понятно ЧТО и ДЛЯ ЧЕГО
        Ответить
        • Смотря что вы подразумеваете, говоря "ЧТО" и "ДЛЯ ЧЕГО".
          Если я напишу:
          int a = 0;
          Вам ясно "ЧТО" и "ДЛЯ ЧЕГО" здесь написано? Мне например совершенно ясно только две вещи: создаётся переменная целого типа, и ей присваивается значение 0 (инициализируется присваиванием).
          Так же и с кодом выше. Ясно, что определена функция, которая получает указатель на функцию и возвращает указатель на функцию.
          Если в C# вы увидите метод, который принимает и отдаёт делегат, вам тоже станет плохо?
          Ответить
        • язык не говно, но такую конструкцию по-другому можно написать только через typedef - тогда будет понятно ЧТО и ДЛЯ ЧЕГО.
          Ответить
    • typedef в С++ нет?
      Ответить
      • Возможно, это старый сишный хедер
        Ответить
        • typedef и в Си есть
          Ответить
          • настоящие сишники не пользуются typedef :)
            Ответить
            • Ещё как пользуются. В хидерах например, при объявлении структур, чтобы при их использовании можно было писать просто имя типа, без приставки "struct".
              Ответить
              • это шутка была.
                смотрим на смайлик в конце и перестаем быть такими серьезными.
                Ответить
    • язык, кстати - не С++.
      Ответить
    • Специально для ущербных людей, не имеющих сишного компиля, даже трубы...
      typedef void _Cdecl (* _CatcherPTR)();
      void _Cdecl (* _Cdecl signal(int __sig, void _Cdecl (* __func)(int))) (int);
      typedef заюзан, полегчало?
      Ответить
      • под рукой сейчас только msvc.

        typedef void (*handler_t)(int);

        handler_t signal(int __sig, handler_t handler);

        typedef заюзан. полегчало.
        Ответить
      • Товарищъ, учи typedef'ы!
        Ответить
    • Запостивший - быдлокодер, сбитый с толку сложными для него конструкциями.
      Ответить
      • Сложная конструкция - это то, что следует упростить. Особенно это важно, при работе в команде разработчиков.
        Ответить
    • Вообще, чтобы не смущаться при виде подобных штук, очень полезно выучить правило "право-лево". Смотреть, например, тут: http://www.kalinin.ru/programming/cpp/17_07_00.shtml
      Ответить
      • Да. Мне особенно функция понравилась:
        int (*(*(*fun)())[3])();
        Теперь, главное, придумать куlа её использовать. :D
        Ответить

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