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

    +17

    1. 1
    2. 2
    3. 3
    #if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE)
    #define main    SDL_main
    #endif

    Боже, за что??!

    http://hg.libsdl.org/SDL/file/75726efbf679/include/SDL_main.h

    Запостил: bazhenovc, 19 Июля 2013

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

    • Это что, переопределение точки входа?
      Ответить
    • SFML используй.
      Ответить
    • Это за кроссплатформенность.
      В андроидной НДК, например, вместо main нужна другая поебень.
      Ответить
      • Ясно.
        Ответить
      • int drugaya_poeben() {
        }

        ?
        Ответить
      • Можно было заместо этого искать пользователький main, используя dlopen+dlsym в методе drugaya_poeben(), известный как android_main.
        Ответить
        • Проще уж во всех случаях называть метод SDL_main, и вызывать его из SDL'овских платформозависимых реализаций main(), WinMain() или drugaya_poeben() безо всяких dlopen'ов.
          Ответить
          • Лично мне кажется, что проще один раз прогемооится с android (а в linux, windows можно пользовать и обычный main).
            Решение с макросом же имеет ряд недостатков: забыл подключить sdl_main.h, или выбрал сигнатуру отличную от той, что ждет sdl - получи нечитаемую ошибку линковки.
            Ответить
          • У меня в моей собественной библиотеке сделано вообще ёбнуто - для каждой платформы своя main (или android_main) они все чуть по-разному реализованы, но все в итоге для обработки сообщений ОСИ да и для общения с основным кодом используют внутри себя некоторую функцию LoopProc, которая... не-не-не, она не колбек, как надо, она просто описана как заголовок, а ты - реализуй функцию по заголовку, иначе ошибка линковки.
            Ответить
    • SDL_MAIN_NEEDED
      читать как
      LSD_NEEDED
      Ответить
    • Макросы — зло.
      Ответить
    • За грехи
      Ответить

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