Привет ембедерам! Но у вас же нет здесь ассемблера. Только си.
Я понимаю, почему так выглядит си код. Нет деструктора, есть похожее на исключения. Причем данный механизм именно windows, хотя возможно он скрыт за макросами, для переносимости.
Всякого можно придумать. К примеру динамически загружать функции из msvcrt.dll какой она там версии. Посоветовали, взять реализации STL из STL Port и MS STL. Точечно, буду копировать реализацию, очищая от макросов.
Главная причина, это желание писать движок Arcanum на С++ 23 и сохранить совместимость с Windows 95, 98, Me. Добавлю, то что нужно движку. На остальное пока нет, времени и сил.
// helloapp.cpp : Minimal MFC Windows app.
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// WinHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include <afxwin.h>
// Define a window class derived from CFrameWnd
class CHelloWindow : public CFrameWnd
{
public:
CHelloWindow()
{ Create(NULL, "Hello World!", WS_OVERLAPPEDWINDOW, rectDefault); }
};
// Define an application class derived from CWinApp
class CHelloApp : public CWinApp
{
public:
virtual BOOL InitInstance();
};
// Construct the CHelloApp's m_pMainWnd data member
BOOL CHelloApp::InitInstance()
{
m_pMainWnd = new CHelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
CHelloApp HelloApp; // HelloApp's constructor initializes and runs the app
Не сказал бы, что игрушка. Можно писать не многопоточные программы, игры разной сложности, можно использовать динамическую линковку к dll,so. Это будет работать.
Вторым шагом можно сделать модули для SDL 1.2 и SDL3 для новых и старых систем. В модулях загружать через GetProcAddress.
Создать модуль с единым api который бы вызывал данные модули в зависимости от системы. Доделать STL.
И в итоге можно писать один код сразу для всех новых и старых систем на современном С++ 23. Пока без исключений, так как пока для меня их добавление, намного сложнее, чем написать основные библиотечные фичи и контейнеры.
Допустим даже если поможет, а толку то. Безопасная, но тормозная, неудобная, сливающая тоннами информацию о пользователе, за его же деньги. Проблемы с обновлением, оптимизацией, купите ПК с tpm 2.0 и бла, бла, бла.
Данный подход расширяет программирование под ретро системы. С++ 23 его фичи и использование современных компиляторов хорошо оптимизируют код. Это дополнительная производительность, за которую по сути я не плачу это из коробки. Очень приятно, мне в библиотеке LDL приходилось для софт рендера дублировать работу с разными форматами изображений, с помощью С++ я смогу это упростить и быть уверенным, что все заинлайниться так как буду использовать шаблоны, constexpr.
Я ожидал проблем с манглингом имен, но их нет. Протестировал на дополнительных модулях, классы, доп using'и и компилятор применяет совместимые названия, линкер от vc 6.0 корректно все линкует.
Добавил опрос, для разрядки обстановки:)
Привет ембедерам! Но у вас же нет здесь ассемблера. Только си.
Я понимаю, почему так выглядит си код. Нет деструктора, есть похожее на исключения. Причем данный механизм именно windows, хотя возможно он скрыт за макросами, для переносимости.
Всякого можно придумать. К примеру динамически загружать функции из msvcrt.dll какой она там версии. Посоветовали, взять реализации STL из STL Port и MS STL. Точечно, буду копировать реализацию, очищая от макросов.
Главная причина, это желание писать движок Arcanum на С++ 23 и сохранить совместимость с Windows 95, 98, Me. Добавлю, то что нужно движку. На остальное пока нет, времени и сил.
Сэр, так точно, сэр.
Спасибо товарищь, майор за статью.
Макс поставил, на iPhone, android, windows 11, astra linux, Nintendo switch, xbox и ps5.
А вот соседи ТГ пользуются:)
Запрещаю, запрещать:)
Эта клавиатура мощнее моего ноутбука:)
До чего дошел прогресс.
Зэ:)
В С++ тоже ключевые слова на латинице, шах и мат:))
Ландон из тхе кэпиталл оф грейт бритень:))
Сначала прочитал как РПЦ, думал ничего себе прогресс:)
Да я собираю только 32 битный код без расширений и sse. Шаблоны и новые фичи транслируются в стандартные x86 инструкции.
Я просто компилятором msvc 2026 создаю уже оптимизированные obj файлы. А линкер лишь компанует все в exe.
Точно помню информацию, что старые mac os как раз использовали pascal для разработки и довольно широко. После чего со временем перешли на objective C.
В чертогах памяти, вспоминается что использование PASCAL как пример
использовали, не потому, что первые версии были на pascal, а потому, что это ускоряло код. Откуда эта информация, не помню.
Ага помним.
Не сказал бы, что игрушка. Можно писать не многопоточные программы, игры разной сложности, можно использовать динамическую линковку к dll,so. Это будет работать.
Вторым шагом можно сделать модули для SDL 1.2 и SDL3 для новых и старых систем. В модулях загружать через GetProcAddress.
Создать модуль с единым api который бы вызывал данные модули в зависимости от системы. Доделать STL.
И в итоге можно писать один код сразу для всех новых и старых систем на современном С++ 23. Пока без исключений, так как пока для меня их добавление, намного сложнее, чем написать основные библиотечные фичи и контейнеры.
Допустим даже если поможет, а толку то. Безопасная, но тормозная, неудобная, сливающая тоннами информацию о пользователе, за его же деньги. Проблемы с обновлением, оптимизацией, купите ПК с tpm 2.0 и бла, бла, бла.
Ещё поэкспериментирую с поддержкой исключений. Уверен, что решение есть.
Данный подход расширяет программирование под ретро системы. С++ 23 его фичи и использование современных компиляторов хорошо оптимизируют код. Это дополнительная производительность, за которую по сути я не плачу это из коробки. Очень приятно, мне в библиотеке LDL приходилось для софт рендера дублировать работу с разными форматами изображений, с помощью С++ я смогу это упростить и быть уверенным, что все заинлайниться так как буду использовать шаблоны, constexpr.
Я ожидал проблем с манглингом имен, но их нет. Протестировал на дополнительных модулях, классы, доп using'и и компилятор применяет совместимые названия, линкер от vc 6.0 корректно все линкует.