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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // https://github.com/dotnet/coreclr/blob/a589e3926a1780256fdb52376f8681fe047daf54/src/vm/binder.cpp#L503-L511
    
    const MscorlibBinder::OffsetAndSizeCheck MscorlibBinder::OffsetsAndSizes[] =
    {
        #define DEFINE_CLASS_U(nameSpace, stringName, unmanagedType) \
            { PTR_CSTR((TADDR) g_ ## nameSpace ## NS ), PTR_CUTF8((TADDR) # stringName), sizeof(unmanagedType), 0, 0, 0 },
        
        #define DEFINE_FIELD_U(stringName, unmanagedContainingType, unmanagedOffset) \
            { 0, 0, 0, PTR_CUTF8((TADDR) # stringName), offsetof(unmanagedContainingType, unmanagedOffset), sizeof(((unmanagedContainingType*)1)->unmanagedOffset) },
        #include "mscorlib.h"
    };

    Дух старой школы всё еще живет в майкрософт

    Запостил: j123123, 08 Мая 2018

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

    • Как вообще называется этот "паттерн", когда дефайним какую-то хрень, потом инклудим какую-то хрень, чтоб в зависимости от надефайненого туда всовывалась та или иная хрень?
      Ответить
    • Чтобы по ашнику как бы генерировался список всех определенных в нем классов...
      Ответить
    • магия препроцессинга
      Ответить

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