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

    +16

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <windows.h>
     #include <iostream>
     int main ()
     {
         HINSTANCE result;
         result=ShellExecute(NULL,NULL,L"E:\\.mp3",NULL,NULL,SW_SHOWDEFAULT);
         if ((int)result<=32)
         std::cout << "Error!\nReturn value: " << (int)result << "\n";
         return 0;
     }

    Как написать mp3-плеер на с++ в 10 строк без использования сторонних библиотек?
    Гении с cyberforum знают ответ!

    http://www.cyberforum.ru/cpp-beginners/thread444490-page3.html

    gost, 13 Мая 2014

    Комментарии (30)
  2. C++ / Говнокод #15976

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    switch (impl->used_hash)
                {
                case false:
                    break;
                case true :
                    ..........
            }

    Разбирал сырцы одного "гения" и нашел это...

    LuCiFer, 13 Мая 2014

    Комментарии (31)
  3. C++ / Говнокод #15970

    +13

    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
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    #include <iostream>
    
    using namespace std;
    
    class Foo
    {
    public:
    	void foo()
    	{
    		cout << "Destruct" << endl;
    	}
    };
    
    int main() 
    {
    	void (Foo::*func)() = &Foo::foo;
    	void *adress = (void*&)func;
    	void (*new_func)(Foo*) = (void (*)(Foo*))adress;
    	Foo obj;
    	new_func(&obj);
    }

    Юный падаван постигает силу void-указателей.

    west_coast_coders, 13 Мая 2014

    Комментарии (7)
  4. C++ / Говнокод #15964

    +13

    1. 1
    2. 2
    BOOST_PP_REPEAT(AMOUNT_OF_EMPLACE_CONSTRUCTOR_PARAMETER, GENERATE_EMPLACE_BACK, BOOST_PP_EMPTY()) 
    //Если видишь access violation, то это просто сработали ассерты. Вынеси их в отдельные функции для удобства отладки (см GENERATE_EMPLACE_BACK). Мне пока не понадобилось, а сейчас это делать лениво.

    laMer007, 12 Мая 2014

    Комментарии (4)
  5. C++ / Говнокод #15953

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    auto mesh=mesh_loader.load("wall.x").
    map([](auto m){
      return m.SetPosition(0.f, 0.f, 0.f);
    }).map([=](auto m){
      return m.SetRotation(xr,yr,zr);
    }).map(::std::bind(&Mesh::SetSize, _1, 90, 60, 90)).
    map(&Mesh::RecalculateNormals);

    LispGovno, 10 Мая 2014

    Комментарии (55)
  6. C++ / Говнокод #15947

    +12

    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
    16. 16
    17. 17
    18. 18
    AttachmentService::MimeType AttachmentService::mimeTypeByCodeKey(const QString &codeKey) const
     {
         if(codeKey.toLower() == QString("MimeType_PDF").toLower())       return MimeType_PDF;
         if(codeKey.toLower() == QString("MimeType_JPEG").toLower())      return MimeType_JPEG;
         if(codeKey.toLower() == QString("MimeType_PNG").toLower())       return MimeType_PNG;
         if(codeKey.toLower() == QString("MimeType_HTML").toLower())      return MimeType_HTML;
         if(codeKey.toLower() == QString("MimeType_ZHTML").toLower())     return MimeType_ZHTML;
         if(codeKey.toLower() == QString("MimeType_TEXT").toLower())      return MimeType_TEXT;
         if(codeKey.toLower() == QString("MimeType_XLS").toLower())       return MimeType_XLS;
         if(codeKey.toLower() == QString("MimeType_DOC").toLower())       return MimeType_DOC;
         if(codeKey.toLower() == QString("MimeType_PPT").toLower())       return MimeType_PPT;
         if(codeKey.toLower() == QString("MimeType_GIF").toLower())       return MimeType_GIF;
         if(codeKey.toLower() == QString("MimeType_BMP").toLower())       return MimeType_BMP;
         if(codeKey.toLower() == QString("MimeType_MPEG").toLower())      return MimeType_MPEG;
         if(codeKey.toLower() == QString("MimeType_MP4").toLower())       return MimeType_MP4;
         if(codeKey.toLower() == QString("MimeType_MP3").toLower())       return MimeType_MP3;
         return MimeType_UNKNOWN;
    }

    Коллега откопал в моём коде, написанном под какими-то веществами по ходу.
    Изначально было сравнение строк как есть, без приведения в нижний регистр, а потом понадобилось подстраховаться от левого регистра символов.

    FlySnake, 09 Мая 2014

    Комментарии (24)
  7. C++ / Говнокод #15932

    +12

    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
    16. 16
    17. 17
    QVector<int> v1;
    v1.push_back(1);
    v1.push_back(2);
    
    // взяли итератор на нулевой элемент вектора v1
    QVector<int>::iterator it = v1.begin();
    
    // замутили копию
    QVector<int> v2 = v1;
    
    v1[1] = 42;
    *it = 5;
    v2[1] = 100500;
    
    // и что же мы получим?
    qDebug() << v1; // QVector(1, 42)
    qDebug() << v2; // QVector(5, 100500)

    Ловим лулзы с implicit sharing'ом.

    Мораль (она описана в доке): нельзя копировать implicit shared контейнер пока живы и используются неконстантные итераторы на его элементы.

    bormand, 06 Мая 2014

    Комментарии (88)
  8. C++ / Говнокод #15928

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<class Container>
    void COW_guard(Container& forUnCow){
      const Container c={};
      cc+=c;
    }

    LispGovno, 06 Мая 2014

    Комментарии (56)
  9. C++ / Говнокод #15893

    +73

    1. 1
    http://bnw.im/p/JCBN9N

    https://bnw.im/u/j123123

    j123123, 04 Мая 2014

    Комментарии (10)
  10. C++ / Говнокод #15885

    +17

    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
    16. 16
    17. 17
    18. 18
    19. 19
    cKeyCfg::types_t cConfiguration::SearchInType(string type)
    {
        CTint i = 0;
        const CTbyte * types[] = { "S", "D" };
    
        for(i = 0; i < sizeof(types)/sizeof(types[0]); i++) {
          if ( strcmp(type.c_str(),types[i]) == 0) {
            switch (i) {
            case 0: // Is string
              return cKeyCfg::stringa;
            case 1: // Is decimal
              return cKeyCfg::decimale;
            default: //Default value VT_BSTR
              return cKeyCfg::unknow;
            }
          }
        }
        return cKeyCfg::unknow;
    }

    сделано на родине Fiat'а.

    Dummy00001, 02 Мая 2014

    Комментарии (6)