Форум программистов, компьютерный форум, киберфорум
Комментарии
Войти
Регистрация
Восстановить пароль
  1. Старый комментарий
    Аватар для netBool
    На чем пишутся сайты?
    Цитата:
    Так же на php написан и habrahabr.
    Если верить Wappalizer-у, то Хабр, видимо, недавно переписали на node.js && Express
    Запись от netBool размещена 20.12.2018 в 12:04 netBool вне форума
  2. Старый комментарий
    Построение UML-диаграмм для python (plantUML)
    "покупать за 12к" https://yadi.sk/i/_XAxNUzd3Z4zyB Это проф. версия с подпиской на год и фолбэк версией 2018.1
    Даже передать тебе не смогу это чувство. Как будто с трехколесного велосипеда сел на Мазду ЦэИкс7 все красиво, удобно, окупилось за неделю...
    Скринить суперские диаграммы не буду, понимаю что и так травмирую психику...
    Запись от sabrus размещена 11.07.2018 в 19:51 sabrus вне форума
  3. Старый комментарий
    Аватар для Avazart
    С++ глазами шарпийца
    Да и почему складывается впечатление что шарписты считают что если мол язык как бы похож, то можно книги не читать и бегут гавнокодить, а не тут то было...

    При переходе с С++ на C# такое может и проканать местами(хотя так не стоит делать) а вот обратное - точно нет.
    Запись от Avazart размещена 20.06.2018 в 23:50 Avazart на форуме
    Обновил(-а) Avazart 20.06.2018 в 23:54
  4. Старый комментарий
    Аватар для Croessmah
    С++ глазами шарпийца
    Цитата:
    PVS-studio вам в помощь.
    Слишком жирно. Просто нужно предупреждения читать.
    Запись от Croessmah размещена 20.06.2018 в 23:35 Croessmah на форуме
  5. Старый комментарий
    Аватар для Eva Rosalene
    С++ глазами шарпийца
    Цитата:
    Мало того! Даже эта функция отрабатывала без ошибок! А ошибка возникала где-то после нее... Неудивительно, что я искал ее три дня...
    PVS-studio вам в помощь.
    Запись от Eva Rosalene размещена 20.06.2018 в 15:01 Eva Rosalene вне форума
  6. Старый комментарий
    Аватар для Croessmah
    С++ глазами шарпийца
    Цитата:
    Немного еще о неочевидным вещах.
    Если не ошибаюсь, то это даже в любом учебнике для чайников рассматривают. Общее правило таково - все элементы массива, для которых не хватило инициализаторов инициализируются нулями (для нашего случая).
    Цитата:
    Как видно из картинки был объявлен массив act_key размером 16 байт и не заполнен, но в отладке он уже 24 байта и заполнен символом "M". Любопытно, правда?
    Что любопытного? Память как память. Вы как с Луны свалились.
    Цитата:
    Я думаю, вам понравится такой вариант:
    C++
    1
    2
    3
    
        char a[5] = "be";
        const char *b = "gin";
        char* cr = strcat(a,b);
    Здесь неопределенное поведение, т.к. вылезаете за пределы массива a. Так что нет, нам такой вариант не понравится.
    Цитата:
    char[5] и char* - это разные типы данных.
    Ну все же плюсовики знают, что тип char[5] может быть "разложен" до char*, никто из этого никакой тайны не делает. Это базовые знания.
    Цитата:
    В С++ sizeof может возвращать размер не только типа sizeof(int), но и переменной
    Он возвращает размер типа переменной, т.е. в любом случае он дает размер типа.
    Цитата:
    тк в С++ все массивы делятся на статические (char c[3] = "aaa") и динамические char *c = new char[3].
    Для начала, статический и динамический - это времена хранения, а значит массивы (как и другие объекты) еще бывают автоматическими и потоковыми.
    Цитата:
    А вот динамического - никак, поскольку sizeof вернет всего лишь размер указателя.
    Потому что применяете его к указателю, и, как следствие, получаете размер указателя.
    Цитата:
    Здесь все исключения можно разделить на две группы: исключения с++ и системные исключения
    Те самые "системные исключения" - это механизм SEH, который есть далеко не везде.
    А если проц выдернуть во время работы, то и система, видимо, недоделка - не обрабатывает такие "исключения".
    Странно мешать всё в кучу.
    Запись от Croessmah размещена 18.06.2018 в 12:42 Croessmah на форуме
    Обновил(-а) Croessmah 18.06.2018 в 12:43
  7. Старый комментарий
    Аватар для Avazart
    С++ глазами шарпийца
    Если оно унаследовано от Си не означает что у С++ та же философия и подходы, так что не путайте людей.
    Запись от Avazart размещена 16.06.2018 в 14:51 Avazart на форуме
  8. Старый комментарий
    Аватар для netBool
    С++ глазами шарпийца
    Цитата:
    Все описанное тут сравнение с Си, а не С++.
    C++ унаследовало все это от Си, и все стало частью ++. Но да, это Си-стиль

    Цитата:
    7 байт.
    Об этом не успел написать, хотел во второй части. По сути это объявление сhar *a = "be\0mmm"; эквивалентно char*a={'m','m','\0','m','m','m','\0'}, последний символ добавляется автоматически, но остается за пределами массива. Так что даже показательнее будет такой эквивалент:

    C++
    1
    2
    
    char a[6]={'m','m','\0','m','m','m'}
    a[6] = '\0';

    Не по теме:

    Для исключения ub под a[6] еще память надо выделить. Так что не повторять такую запись на практике



    Для меня это некий парадокс: char a[6] = "be\0mmm"; - создаем массив с 6-ю элементами, а выделаем под семь. Чуть позже распишу так же любопытные баги, с которыми я сталкивался, не зная этой особенности
    Запись от netBool размещена 16.06.2018 в 11:01 netBool вне форума
  9. Старый комментарий
    Аватар для Avazart
    С++ глазами шарпийца
    Все описанное тут сравнение с Си, а не С++.
    В С++ есть std::basic_string<> который ведет себя довольно просто и прозрачно.
    Запись от Avazart размещена 15.06.2018 в 22:31 Avazart на форуме
  10. Старый комментарий
    Аватар для Avazart
    С++ глазами шарпийца
    Цитата:
    В ней мы получили указатель под массив 6 байт.
    7 байт.
    Запись от Avazart размещена 15.06.2018 в 22:27 Avazart на форуме
    Обновил(-а) Avazart 15.06.2018 в 22:34
  11. Старый комментарий
    Аватар для Rius
    Преобразование структуры в массив байт
    Сработало, да. Но причина и аппаратная в том числе.
    The curious case of unaligned access on ARM
    Запись от Rius размещена 11.06.2018 в 16:47 Rius на форуме
  12. Старый комментарий
    Аватар для netBool
    Преобразование структуры в массив байт
    Цитата:
    Оказалось, требовалось выравнивание по границе 4 байт (32-битное слово).
    Любопытно. Спасибо

    Видимо, это особенность самого Си-компилятора под ARM, а не процессора ARM. Ведь memcpy сработало
    Запись от netBool размещена 11.06.2018 в 12:51 netBool вне форума
  13. Старый комментарий
    Аватар для Rius
    Преобразование структуры в массив байт
    Цитата:
    Кстати, если нужно копировать структуру в середину массива, то можно воспользоваться конструкцией:
    Я так на ARM7TDMI сделал как-то раз. Всё же здесь просто и очевидно. А потом искал причину бага на ровном месте: число в один массив нормально копируется, а в другой такой же - хрень получается.
    Оказалось, требовалось выравнивание по границе 4 байт (32-битное слово).

    Так что вы поосторожнее с таким.

    О выравнивании памяти на ARM процессорах на простом примере.
    Запись от Rius размещена 11.06.2018 в 12:11 Rius на форуме
    Обновил(-а) Rius 11.06.2018 в 12:18
  14. Старый комментарий
    Аватар для netBool
    Преобразование структуры в массив байт

    Не по теме:


    Нашел еще на стеке, а потом и тут наткнулся на решение для GCC/MinGW в виде ключа компиляции -mno-ms-bitfields
    Вроде тоже на упаковку влияет. Пока не проверял

    C++ (Qt)
    1
    
    QMAKE_CXXFLAGS += -mno-ms-bitfields

    Запись от netBool размещена 11.06.2018 в 12:00 netBool вне форума
  15. Старый комментарий
    Аватар для netBool
    Заметки про C#. А знали ли вы?
    Цитата:
    Это вовсе не круто.
    Может быть, но мне чертовски приятно, что на шарпе это тоже можно делать

    Цитата:
    Те, кому это надо, используют сразу C/C++, а не эти костыли в виде unsafe.
    В C/C++ в целом по работе с указателями, разумеется, больше возможностей и работать удобнее. Но иногда какую-нибудь мелочь проще приятней реализовать на шарпе, чем постоянно дергать DllImport

    PS: Я на самом деле нисколько не фанат unsafe-C# в рабочих проектах. Скорее интересны эти возможности для личного велосипедирования и спортивного интереса
    Запись от netBool размещена 09.05.2018 в 11:44 netBool вне форума
  16. Старый комментарий
    Аватар для Rius
    Заметки про C#. А знали ли вы?
    Это вовсе не круто.
    Те, кому это надо, используют сразу C/C++, а не эти костыли в виде unsafe.
    Запись от Rius размещена 08.05.2018 в 19:10 Rius на форуме
  17. Старый комментарий
    Аватар для Avazart
    Заметки про C#. А знали ли вы?
    Цитата:
    Юзают в unsafe режиме
    А много людей пишут в unsafe режиме ?
    Запись от Avazart размещена 08.05.2018 в 18:02 Avazart на форуме
  18. Старый комментарий
    Аватар для netBool
    Заметки про C#. А знали ли вы?
    Цитата:
    Во первых в С# не юзают как правило указатели.
    Юзают в unsafe режиме
    Цитата:
    Во вторых в С++ void* тоже не удастся разыменовать, можно привести его как другому типу указателя и потом разыменовать.
    Да, точно)) Спасибо за замечание. Сейчас исправлю))
    Запись от netBool размещена 08.05.2018 в 17:34 netBool вне форума
  19. Старый комментарий
    Аватар для Avazart
    Заметки про C#. А знали ли вы?
    Цитата:
    В отличие от C++, где указатель на void является своеобразным универсальным указателем, в C# нельзя разыменовать void: *void, несмотря на то, что он является значимым типом
    Во первых в С# не юзают как правило указатели.
    Во вторых в С++ void* тоже не удастся разыменовать, можно привести его как другому типу указателя и потом разыменовать.
    Запись от Avazart размещена 08.05.2018 в 12:57 Avazart на форуме
  20. Старый комментарий
    Аватар для netBool
    Преобразование структуры в массив байт
    Кстати, если нужно копировать структуру в середину массива, то можно воспользоваться конструкцией:
    C++
    1
    2
    3
    
        BYTE* bytes = new BYTE[14];
        bytes = old;
        *((jmp_far*)(bytes+7)) = jmpToOrigin;
    где jmp_far - тип объекта jmpToOrigin
    Запись от netBool размещена 04.05.2018 в 09:59 netBool вне форума
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.