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

    +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
    #define class KOKOKO
    #include <sys/shutdown.h>
    #undef class
    
    /* внутри sys/shutdown.h:
    
    typedef struct
    {
        uint64_t start_time;
        pid_t pid;
        int8_t class;
        uint8_t padding[3];
        char *name;
    } ProcessInfo_t;
    */

    перезагружаем qnx neutrino из крестового кода

    Запостил: Xom94ok, 22 Марта 2016

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

    • Поясни
      Ответить
      • В С++ class — зарезервированное слово, переменную так называть нельзя. А в С — можно. Чтобы использовать с С++ подобный сишный код, приходится извращаться.
        Ответить
        • Именно. Это можно было сделать аккуратнее, пробросив через сишный исходник, но qmake не справился.
          Ответить
          • >> qmake не справился.
            что можно ждать от компании, в чьем названии есть слово Тролль?
            Ответить
    • > перезагружаем qnx neutrino из крестового кода

      теже грабли с низкоуровневыми линуховыми хидерами. но мы просто в лоб патчили хидеры и их чек-инили. с дефайнами не парились.
      Ответить
    • А потом в коде писать info.KOKOKO ?
      Ответить
      • Можно. Но зачем?
        Ответить
        • А как иначе достучаться до нужного поля?

          (int8_t*)((void*)(&info) + petuh) ?
          Ответить
          • Действительно, если бы не #undef class, можно было бы просто писа́ть «class», а так придётся писа́ть KOKOKO...
            Ответить
            • Зато нельзя было бы объявлять классы...
              Ответить
              • классы не нужны (с) Торвальдс
                Ответить
              • #define KUDKUDAH class
                Ответить
                • Не прокатит. Раскроется в KOKOKO.
                  Ответить
                  • А как поведёт себя препроцессор, если у макросов более косвенная рекурсия?
                    Ответить
                    • Там защита от рекурсии. Если макрос в цепочке уже раскрывался, то второй раз он не раскроется.

                      #define foo bar
                      #define bar foo

                      foo -> bar -> foo (так и останется, рекурсии не будет)
                      Ответить
                      • где это сказано-то?

                        это разве не impl. specific UB?
                        Ответить
                        • Х.з. я с телефона, стандарт несподручно читать.
                          Ответить
                          • не загружайте стандарт
                            биос сгорел
                            пишу с микроволновки
                            Ответить
                            • Вместо модема - курица гриль?
                              Ответить
                              • Смех смехом, а микроволновка и Вай-Фай работают в одном диапазоне частот.
                                Ответить
                                • Это двухгигагерцовый wifi, да

                                  а пяти гигагерцовый нет
                                  Ответить
              • У нас есть struct!
                Ответить
            • KOKOKO KBar
              {
              public:
                KBar(int foo, KOKOKO KObject *parent);
              };
              Ответить
    • - Даня мне всё рассказал, и я посоветовался с Катей...
      Ответить
    • - Девственник? - он засмеялся. - Сам понял, что спросить хотел? Или забыл, что ночью было?
      Ответить

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