Вот только свечек и шариков такой мощности сегодня существовать не может.

User
background-color: #9B51E0
как этот конкретный фиолетовый цвет? Nuklear — это библиотека для создания immediate mode пользовательских интерфейсов. Библиотека не имеет никаких зависимостей (только C89! только хардкор!), но и не умеет создавать окна операционной системы или выполнять реальный рендеринг. Nuklear — встраиваемая библиотека, которая предоставляет удобные интерфейсы для отрисовки средствами реализованного приложения. Есть примеры на WinAPI, X11, SDL, Allegro, GLFW, OpenGL, DirectX. Родителем концепции была библиотека ImGUI.
Чем прекрасна именно Nuklear? Она имеет небольшой размер (порядка 15 тысяч строк кода), полностью содержится в одном заголовочном файле, создавалась с упором на портативность и простоту использования. Лицензия Public Domain.
Запуск Raspberry Pi с полной поддержкой графики на microSD, навсегда остающейся в режиме read-only после установки системы. Отсутствие какой-либо записи данных на флэш-память повышает надёжность устройства, приближая его к промышленному классу изделий. Пошаговая инструкция. Небольшой театр инженерного абсурда для развлечения аудитории.
Если что-то выглядит как утка, плавает как утка и крякает как утка, то это, вероятно, утка и есть.
main()
и функций, прямо или косвенно вызываемых из main()
. Тем не менее, на самом деле выполнение программы начинается вовсе не с main()
, а с некоторого кода из стандартной библиотеки, поставляемой вместе с компилятором. Таковой код, по идее, должен подготавливать окружение для других функций стандартной библиотеки, которые, возможно, позовёт main()
, а также параметры самой main()
(под Windows; Unix-системы имеют тенденцию передавать argc/argv/envp
в подготовленном виде прямо при запуске процесса, но речь не о них). Симметрично, завершающий return
в функции main()
— вовсе не последняя инструкция программы, после него следует ещё немного кода из стандартной библиотеки.mainCRTStartup
. В комплекте с VS идут исходники стандартной библиотеки, в VS2015 определение mainCRTStartup
находится в %PROGRAMFILES(X86)%\VC\crt\src\vcruntime\exe_main.cpp
, но, впрочем, всю работу выполняет exe_common.inl
рядом. Давайте туда посмотрим....
// If this module has any thread-local destructors, register the
// callback function with the Unified CRT to run on exit.
_tls_callback_type const * const tls_dtor_callback = __scrt_get_dyn_tls_dtor_callback();
if (*tls_dtor_callback != nullptr && __scrt_is_nonwritable_in_current_image(tls_dtor_callback))
{
_register_thread_local_exe_atexit_callback(*tls_dtor_callback);
}
__telemetry_main_invoke_trigger(nullptr);
//
// Initialization is complete; invoke main...
//
int const main_result = invoke_main();
//
// main has returned; exit somehow...
//
__telemetry_main_return_trigger(nullptr);
if (!__scrt_is_managed_app())
exit(main_result);
if (!has_cctor)
_cexit();
// Finally, we terminate the CRT:
__scrt_uninitialize_crt(true, false);
return main_result;
...
Information