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

    +13.1

    1. 1
    2. 2
    3. 3
    #define REGISTER_PACKET(cls, type)\
    __declspec(selectany) PacketType cls::s_type = CPacketFactory::RegisterPacket(type, cls::CreateNew); \
    __pragma(comment(linker, "/include:?s_type@##cls##@@2W4PacketType@@C"))

    Очень правильный код... Делать можно только так.

    Запостил: Говногость, 18 Августа 2009

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

    • Нашёл на каком-то форуме, где в ответ на проблему, человеку посоветовали такое решение.
      Ответить
    • >>Очень правильный код... Делать можно только так.
      И что это значит?
      Это значит, что никакого стандарта на самом деле нету. Name mangling везде разный. Даже если этот Говнокод #1616 в каком-то конкретном случае и решит кукую-то проблему, на каком-то конкретном компиляторе, какой-то конкретной версии... итд итд
      Ответить
      • >Делать можно только так.
        Потому это и написал. Подругому там врятли что-то можно сделать... Если конечно, не искать более лёгких путей, но в обход стандарта, то всё скорее всего было-бы переносимо.
        Ответить
      • Mangling на всех компиляторах разный.
        Pragma на всех компиляторах разные.

        Это значит, что C++ не нужен.
        Ответить
    • От макросов, через которых реализована более-менее сложная функциональность вообще блевать тянет.
      А тут еще такие кренделя с линковщиком.
      Ответить
    • учити макрасы. последнее време много тупых кодэров развялось...
      Ответить
    • Чушь какая-то написанна. Это не скомпилируеться...
      Ответить
    • А что этот код делает?
      Ответить

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