1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.045
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Steel Rat, про dll важно понимать только одно: в отличии от статик к программе присобачиваются только имена импортируемых из либы функций. Сам их код лежит на диске, пока его не "позовут". Когда позовут - он быстренько подгружается и выполняется. Таким образом одной dll может пользоваться толпа программ работающих одновременно.

    Экономится дисковое пространство и выделенная оператива. Вот и всех дел.

    Надо сказать что похожий механизм внедрён относительно недавно и в Линукс.
     
  4. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Bato-San, ну это-то я знаю. Подхватываются автоматом и пофиг на них. Вот и все знания. =)
     
  5. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Да, лет двадцать как
     
    Ulysses, Рыжий Тигра и Alex Kagansky нравится это.
  6. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Зря. Очень удобная штука.
    • Легко заменять: остановил прогу, сменил .dll'ку (а если грузит через LoadLibrary(), то достаточно предусмотреть в проге кнопку "сменить .dll", чтобы освободила, подождала чуток и обратно подцепила) и снова в бой.
    • Легко делать: в MSVC6 это "add new project" - "dynamic link library".
    • Легко подключать при линковке: просто задать project'у проги dependency от project'а .dll'ки.
    • Легко отлаживать: на закладке "debug" в поле "executable for debug session" задать имя проги, в исходниках .dll'ки наставить breakpoint'ов и пустить выполняться.
    • Ну, и самое ценное: если прога не своя и надо ей немножко, хм, сменить поведение - изнутри .dll'ки можно делать с прогой что хочешь: хоть данные менять, хоть код патчить.
    В общем, попробуй при случае. Тебе понравится! :-)

    ---------- Сообщение добавлено в 10:41 ---------- Предыдущее сообщение размещено в 10:37 ----------

    "Какой механизм, дарагой, слюшай, всё вручную!" (L) древний похабный анекдот про грузина :-)))))
    .so - я застал в 96-м, когда только-только за linux взялся. Но что-то мне подсказывает, что он там есть если и не с версии 0.0.1, то где-то с тех времён.
     
    Последнее редактирование: 21 ноя 2014
  7. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
  8. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    "Семёёён Семёныч!.." :-( Всего-то делов-то было - ткнуть клавишей F1 в слово "DllMain":
    (и густо покраснел)
     
  9. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    В общем, докладываю. Если кто хочет разрабатывать под мобилки и не хочет трахаться с чудо Eclipse'ом или платить деньги за VisualGDB.
    Потестены Visual Studio 2015 Preview и Visual Studio 2013 Community Edition + Tegra Android Development Pack.
    - 2015 - сыро и бажно, пока не годится, но похоже это будет если не эпик вин, то очень и очень хорошая среда.
    - Второй вариант VS 2013 Community Edition + Tegra Android Development Pack = лучшее, что есть на сегодня. Особенно учитывая полную бесплатность и среды и расширения от nVidia. Сборка, отладка - очень удобно, почти как простое приложение для винды. Дебаг даже поддерживает брейкпоинты с состоянием срабатывания. Плюс профилирование графики и всякие прочие ништяки от NVidia Nsight.
    Почему я об этом пишу? Да потому что сам потратил кучу времени, чтобы узнать такие простые вещи. Как TADP прошёл мимо меня? Зачем я делал поддержку NDK и дебага в Code::Blocks?
     
    VorteX DrAgON, Bato-San, quazatron и ещё 1-му нравится это.
  10. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Нужен какой-то ресурсометр под win2K/XP, вроде того что был в '95/98: показывать не занятость памяти / загрузку процессора, а именно расход "системных ресурсов" (места в таблицах хэндлов и не помню чего ещё) - тех самых, нехватка которых вызывает ошибку 1450 (ERROR_NO_SYSTEM_RESOURCES в winerror.h) даже когда ОЗУ и проца ещё завались.
    А то напоролся на ситуацию: игра подъедает себе ОЗУ на аж пару мег больше положенного и через 3-5 минут валится при попытке вывода очередной пачки левых субтитров; пока обнаружил что игре что-то не нравится при чтении .tre-файлов, пока доработал перехватчики работы с файлами на предмет трассировки совместно с выводом субтитров (в разных потоках!), пока догадался и сделал при каждом отлупе файловой операции вывести возвращаемое GetLastError()'ом, пока увидел ошибку 1450 и вспомнил что это за зверь... :-(
    Оказалось, что в выводе каждого кадра (где-полсотни раз в секунду) случайно остался отладочный кусок, который выделяет HBITMAP и забывает его отдать. Два дня ухлопал, пока нашёл. :-( А был бы ресурсометр - что-то заподозрил бы уже на первой минуте первого запуска. :-)
     
  11. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, любой программист знает, где взять этот самый "ресурсомер". Но, простые пути на всем известный сайт не для тебя... Кстати возник естественный вопрос - как надо писать программы, что бы обеспечивать такие утечки памяти ? :facepalm:
     
  12. VorteX DrAgON Троллей не кормлю, сами сдохнут.

    VorteX DrAgON

    Legacy

    Регистрация:
    20 сен 2004
    Сообщения:
    3.050
    Это ты ещё (возможно) не видел сколько кушает chkdsk для проверки винта от 1Тб и выше с ключами /f /r /x на 16Гб оперативы
    Причём по заявлению спецов из Microsoft это вполне нормальное поведение.
     
  13. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Тривиально:
    Код:
    {
      int *p = malloc( скольконежалко );
    }
    :-)
    Но хохма в том, что и ОЗУ вполне хватало, и утечек не было (в debug'ной конфигурации контролирую _CrtDumpMemoryLeaks()'ом), а "системные ресурсы" тю-тю. :-(
    (задрав нос) Я не "любой". Делись! Обоими: и програмкой со значком в систрее, и функцией, которую можно вызвать перед выходом.
    Не, не видел. У меня NTFS вообще не особо в ходу - только под торренты с фильмами и всякую мелкую времянку, которую при тяжёлом сбое не жалко форматнуть; всё ценное держу на FAT32'х - их хоть, ежличо, можно вручную отремонтировать. :-)
     
  14. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Три дня назад в дневнике true-grue появилась очень интересная новость, которая имеет все шансы затеряться на фоне внезапной активности остальных форумчан - там после неё был резкий всплеск дневниковых записей.

    http://www.old-games.ru/forum/blog.php?b=2804

    Новость посвящена спонтанному проекту программиста Casey Muratori, работавшего над Granny 3D и Bink - он собирается стримать написание игры без использования каких-либо готовых библиотек, используя чистый С.

    Кейси - адепт олдскульного программирования, обожает Амигу, недолюбливает PHP и жаву, тараторит как Эминем и так иногда фигачит своими "SO!" и "BUT!", что уровни зашкаливают.

    Что особенно интересно в этой новости, особенно в контексте нашей темы? Его вводный пятидневный курс Intro to C on Windows. Планируя просто краткий ликбез для тех, кто планирует смотреть полноценный стрим, Кейси неслабо увлёкся. Он рассказывает обо всём - о переменных и указателях, об устройстве памяти и о внутренностях процессора, рассматривает Visual Studio 2008 с её отладчиком. При этом умудряется очень плавно переходить от темы к теме, а при его темпе речи затрагивается масса интересных тем.

    Каждый ролик длится (в среднем) чуть больше часа, при этом Кейси никогда не замолкает более чем на 4-6 секунд. Человек, не испорченный многолетним преподаванием одной и той же темы, чудеса творит. Такой энтузиазм, глаза горят... Страшное дело.

    После записи Кейси ещё минут 20 отвечает на вопросы зрителей - это отдельные ролики с Q&A.

    Не пропустите. Это очень интересно, а для интересующихся самой сишкой ещё и невероятно полезно.

    (плейлист)
    https://www.youtube.com/playlist?list=PLEMXAbCVnmY6RverunClc_DMLNDd3ASRp

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

    Только без мэээ... бэээ по 10 минут, как наши умеют. Строчит как пулемёт.
     
    Geryon, Dimouse, Steel Rat и 3 другим нравится это.
  15. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    И весьма неплохо как тренажёр для восприятия аглицкого на слух.
     
    Bato-San и A.P.$lasH нравится это.
  16. Geryon

    Geryon

    Регистрация:
    13 май 2008
    Сообщения:
    1.228
    Код:
    class MOS6526: public component
    {
       ...
    protected:
       ...
       virtual void interrupt(bool state) = 0; // Error! E498: syntax error before 'state'; probable cause: incorrectly spelled type name
    
       virtual void portA() {} // Error! E357: virtual function may only be declared in a class
       virtual void portB() {} // Error! E357: virtual function may only be declared in a class
       ...
    
    Вот на этот код Open Watcom C++ 1.9 ругается (ошибки показаны в комментах к соответствующим строкам). В чем тут может быть дело?
     
  17. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Geryon, точка с запятой стоит после закрывающей скобки класса?
     
  18. Geryon

    Geryon

    Регистрация:
    13 май 2008
    Сообщения:
    1.228
    Да, стоит. Если ее убрать - ошибки никуда не деваются.
     
    Последнее редактирование: 9 дек 2014
  19. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Замени interrupt на intrrupt (и в .CPP файле тоже, где он используется).
     
    Geryon и Steel Rat нравится это.
  20. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Geryon, не-не, она должна быть. =) component - существует? В заголовок включён?
     
  21. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Geryon, а в ваткоме точно есть тип bool?
    Это раз. А два - таки действительно, попробуй внутри класса эти две функции только объявить, а определить ниже, после закрывающей скобки класса.
     
  22. Geryon

    Geryon

    Регистрация:
    13 май 2008
    Сообщения:
    1.228
    Замена interrupt на intrrupt помогла. Component - существует, в заголовок включен.

    Следующая проблема (т.е. очередная проблема при попытке сборки libsidplayfp 1.6.0 под OpenWatcom C++):

    Код:
    #include "Banks/Bank.h"
    #include "c64/c64env.h"
    #include "sidendian.h"
    #include "CIA/mos6526.h"
    
    /**
     * CIA 1
     *
     * Generates IRQs
     *
     * Located at $DC00-$DCFF
     */
    class c64cia1: public MOS6526, public Bank // c64/c64cia.h(41): Error! E006: col(1) syntax error; probable cause: missing ";"
    {
       ...
    
    Вроде бы классы Bank и MOS6526 объявлены. Что за черная магия?

    ---------- Сообщение добавлено в 15:40 ---------- Предыдущее сообщение размещено в 15:38 ----------

    Тип bool где-то есть, поскольку попытка его переопределить кончается еще более ужасными воплями. С теми функциями покончено - проблема была в слове interrupt.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление