1. Си / Говнокод #16740

    +135

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    typedef struct tagКАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ {
        тыц;
        тыц;
        и еще пару раз тыц;
    } КАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ, *PКАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ, *LPКАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ;

    Винстайл такой няшный ^_^

    Запостил: Pythoner, 21 Сентября 2014

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

    • Это СПАРТА. Так надо. Иначе придется писать struct при каждом использовании этой неебическидлиннойхуйни.
      Ответить
      • typedef {
        } КАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ, *PКАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ, *LPКАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ;
        На одну неебическидлиннуюхуйню короче
        Ответить
        • А этот tagКАКАЯТОНЕЕБИЧЕСКИДЛИННАЯХУЙНЯ - дань уважения к ёбаному говну мамонта старым-добрым компиляторам, не умеющим в анонимные структуры.

          В общем, из песни "бля" не выкинешь...
          Ответить
          • Тем не менее в их хедерах встречаются и анонимные структуры...
            И еще, зачем описывать указатели на структуру? Я понимаю их соображения - встретишь описание типа, увидишь что он начинается с LP и сразу понимаешь что это указатель. Но по мне и *type неплохо показывает с чем имеешь дело.
            Ответить
            • > Тем не менее в их хедерах встречаются и анонимные структуры...
              Ну это, скорее всего, уже из нового кода, в котором они дропнули поддержку своих старых компилеров.

              > LP вместо указателя
              А это, емнип, от винды 3.1 и 16 битных компилеров пошло. На 16-битках как-то по-особому оформлялись эти far pointer'ы, не помню как точно, но одной звездочки было недостаточно. Вот чтобы изолировать программиста от этой питушни они и сделали LP.
              Ответить
              • Тут главное не 16-битность, а сегментированная модель памяти. Для 32-биток с PAE тоже придётся по-особому описывать far pointer'ы.
                Ответить
                • Ну это разве что для платных энтерпрайзных СУБД, которым зачем-то приходится работать под 32-битной архитектурой и т.п. В остальных случаях, имхо, проще пересобрать под x86_64, чем мучиться с этими костылями.

                  Ну и PAE, в большинстве случаев, используется довольно тупо - каждый процесс жрет не более 2 гиг, и ничего о PAE не знает, зато в сумме можно всю память поюзать.
                  Ответить
                  • А вдруг кому-то 64-битного адресного пространства не хватит, и придётся изобретать аналог PAE для x86_64?

                    Пытаюсь представить, сколько времени уйдёт на сканирование такого пространства.
                    Ответить
                    • > сканирование
                      К сожалению, оно закончится гораааздо раньше - ведь страничная адресация тоже неплохо жрет память.
                      Ответить
            • P.S. К слову, WPARAM и LPARAM тоже существовали с тех времен. И WPARAM, емнип, и правда был word'ом.
              Ответить
    • This parameter is reserved and must be NULL
      Ответить
      • cbSize parameter must be set to the size of this structure.
        Ответить
        • This behavior is by design.
          Ответить
          • А я - томат
            Ответить
            • HRESULT hRes = S_OK; 
              BSTR sTomatoURL = NULL;
              ITomatoFactory * pTomatoFactory = NULL;
              ITomato * pTomato = NULL;
              
              hRes = CoCreateInstance(CLSID_TomatoFactory, NULL, CLSCTX_INPROC_SERVER, IID_TomatoFactory, (LPVOID*)&pTomatoFactory);
              if(SUCCEEDED(hRes)) {
              	hRes = (sTomatoURL = SysAllocString(L"http://govnokod.ru/user/6824")) ? S_OK : E_FAIL;
              }
              if(SUCCEEDED(hRes)) {
              	hRes = pTomatoFactory->CreateTomatoFromURL(sTomatoURL, NULL, (LPVOID*)&pTomato);
              }
              SysFreeString(sTomatoURL);
              if(pTomatoFactory) pTomatoFactory->Release();
              if(SUCCEEDED(hRes)) {
              	*ppTomatoOut = pTomato;
              } else {
              	if(pTomato) pTomato->Release();
              }
              return hRes;
              Ответить

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