По-умолчанию он генерирует код таким образом, чтобы его было удобно отлаживать во всяких GDB, как будто студия в отладочном режиме не "что попало" генерирует. Делать не собираешься, но поорать, что все кругом - гaвно, обязан. Это, судя по всему, общая черта всех васмовских спецов.
Вообще-то удобство отладки во всяких GDB обеспечивает отладочная информация, которая всего лишь связывает строчки исходного кода с инструкциями. Километровые портянки избыточного кода это "optimization for compilation time (default)", так в мане про -O0 сказано. У студии свои причуды, но загаживанием кода лишними инструкциями она не болеет. Подавляющее большинство вендовых программ из-под студии вышли, и если бы это было нормой в ней, даже не обратил бы внимания. Мой стиль акын - что вижу, про то и пою. Причин видеть в некоторых сортах гавна фиалки у меня нету.
Немного информации в тему ОПЗ Cи в роли промежуточного языка: https://habr.com/ru/company/ruvds/blog/589839/ P.S. И небольшое дополнение к коду представленному в статье --- Сообщение объединено, 12 дек 2021 --- Некоторое ещё обуждение тоже статьи с Хабра: Почему Си должен умереть (храбростийность) https://gamedev.ru/flame/forum/?id=265640
Bashforth В репе проекта указано, что 100 000 пустого цикла выполняется за 15с. в моём запуске - где то не больше 5-ти секунд.
В продолжение темы гавнокомпилей. Установленный на свежую win11 devc++ отказался работать, выдав -1073741819 (C0000005). Копание в нем привело к самому обыкновенному переполнению буфера, которое венда зачем-то намеренно организовала g++.exe, накормив его хуком msvcrt.dll._access->acspecfc.dll._access. Самое занятное, что хук ничего не делает, только сам вызывает msvcrt.dll._access и садится в лужу не выравняв стек перед выходом. А причина установки этого хука - MajorOsVersion=4 и режим совместимости, которым майкрософт решили всё починить. И standalone-версия mingw с абсолютно той же проблемой. Понятно, что это козни БилаГейца и тайного правительства. Просто возник вопрос - я что один этим гавном пользуюсь? (виндой11 или гцц, нужное подчеркнуть).
Да последняя винда всегда такая. Просто воплей про "мне сломали мой драгоценный компиль, верните всё взад" че-то не слышно. Будто реально никому не надо.
У меня MinGW работает нормально под 11 вендой, поставь версию поновее, может быть, не знаю, что там идет в пачке с devc++, но предполагаю, что этот ваш спецовый дедовский гуан из времен, когда динозавры были большими. --- Сообщение объединено, 16 фев 2024 ---
Уже выясняли, что дедовский гуан мало чем отличается от свежайшего. Я не виноват, что самая удобная и легковесная иде под гцц 2005 года выпуска. ЗЫ: условие, при котором винда глумится над импортом msvcrt.dll, оказалось сложней, чем тупо проверка MajorOsVersion.
Кроме работоспособности на новых системах или вместе с ними мало чем отличается? Отключи или наоборот включи режимы совместимости. Да и потом, причем тут IDE? У тебя же компилятор фейлит, так? Поставь себе компилятор новый и используй старую IDE, не?
Ты такой вумный. "Режимы совместимости" выгдядят так: Если ты думаешь, что я где-то галки ставлю, чтобы такое происходило, то нет. ntdll.dll сама выбирает надо хук поставить или нет. aspecfc.dll содержит в себе профили для приложений, которым устанавливается режим совместимости: Хз откуда берет строку DEVC, но механизм какой-то очень замороченный. Сменив MajorOsVersion я видимо только отбил хеш файла и это помогло на какое-то время, также можно переместить файл в другое место. Но каким-то образом винда потом все равно понимает, что несчастное приложение надо поставить на костыли. --- Сообщение объединено, 16 фев 2024 --- ЗЫ: вероятно майкрософт не считают дедовское гуано совместимым только с ХР и готовы залечить пациента до смерти, лишь бы все было благолепно и совместимо.
Короче Винда полна загадок и неожиданных открытий. \windows\apppatch\sysmain.sdb это база данных, в которой можно крутить эти самые фиксы про совместимость. Галка в свойствах файла таки имеет отношение к этому механизму, но они действуют независимо. Ставить и снимать галку не помогает. Таки да, редактирование файла помогало, но видимо винда зацепившись за versioninfo основного приложения, притягивала фикс обратно к гцц. А mingw32-make это похеренная этим механизмом утилита из состава отдельной mingw и поэтому оно до кучи тоже не работало. Остается добавить только что эта суровая шняга начинается еще в ядре и на момент вызова LdrInitializeThunk в PEB уже есть флаг (=1), включающий act->apphelp->aspecfc. Код (Text): [[fs:[18]+30]+1e8]+210