Aroch
Если бы я хотел рассказать тут про статические локальные переменные, я бы так и сделал.
Ghost2
гуманитарий?
Aroch
Клоун?
Ghost2
поправка, агрессивный гуманитарий.
Aroch
Кисакуку. Гуманитарии обычно лезут с каким-нибудь частным случаем, у которого тоже есть частные случаи, к абсолютно верному утверждению, доказывая что оно не верно (попутав ключевое слово static с длительностью хранения). Потом приводят ссылку, в которой то самое утверждение подтверждается документально.
static storage duration. The storage for the object is allocated when the program begins and deallocated when the program ends. Only one instance of the object exists. All objects declared at namespace scope (including global namespace) have this storage duration, plus those declared with static or extern.
А затем начинаются качели по поводу степени гуманитарности.
> агрессивный
Очнись уже. Кто из нас агрессивный мы уже выяснили в той теме, где ты доказывал, что спрайты при упаковке нужно обязательно сортировать. А когда тебе на баги в твоем алгоритме указали началось вот то же самое, что сейчас.
в SDL2 такое делается грязными хаками.
Если не смущает наличие грязных хаков, можно подсмотреть
Ghost2
https://en.cppreference.com/w/cpp/language/initialization
Non-local variables
All non-local variables with static storage duration are initialized as part of program startup, before the execution of the main function begins (unless deferred, see below). All variables with thread-local storage duration are initialized as part of thread launch, sequenced-before the execution of the thread function begins. For both of these classes of variables, initialization occurs in two distinct stages:
Static initialization
1) If permitted, Constant initialization takes place first (see Constant initialization for the list of those situations). In practice, constant initialization is usually performed at compile time, and pre-calculated object representations are stored as part of the program image. If the compiler doesn't do that, it still has to guarantee that this initialization happens before any dynamic initialization.
2) For all other non-local static and thread-local variables, Zero initialization takes place. In practice, variables that are going to be zero-initialized are placed in the .bss segment of the program image, which occupies no space on disk, and is zeroed out by the OS when loading the program.
есть статические переменные которые подразумевают под собой как локальные так и не локальные. Если ты рассматриваешь случай для не локальных, то так и говори что не локальные статические переменные, а не мешай всё под одну гребенку.
Ghost2
> где ты доказывал, что спрайты при упаковке нужно обязательно сортировать. А
> когда тебе на баги в твоем алгоритме указали началось вот то же самое, что
> сейчас.
это ты про эту https://gamedev.ru/code/forum/?id=222128 тему в которой ты слился и от которой у тебя до сих пор пригорает? Спасибо что напомнил, "теоретик" :) В кавычках потому как и теоретик из тебя не какой.
Aroch
> рассматриваешь случай для не локальных, то так и говори что не локальные
Статические локальные переменные это частный случай статических переменных. Я рад, что ты знаешь про них так много. До этимологии же обычно докапываются или гуманитарии, или бабы. Если к первым ты себя почему-то не причисляешь, то у меня для тебя плохие новости.
> тему в которой ты слился
Вроде слился там ты. Нашел баг в говнокоде своем или так и продолжаешь сортировкой его исправлять? И да, мне там сказали два раза спасибо, а ты только срач развел в том топике, будучи вообще не в теме. Хоть бы на один вопрос ответил адекватно, что мне, что MrShoor.
> кавычках потому как и теоретик из тебя не какой
Пускай так. А никакой пишется слитно.
Я забыл совсем про тему :)
Смысл в инициализации/деструкторе отдельной статически линкованой библиотеки/модуля. Что то вроде CRT инициализации
#pragma section(".CRT$XCA",long,read)
Мне нужен был __DTOR_LIST__. Пока решил по другому, но разобраться как им пользоваться надо, еще понадобиться, а то пока невкурил.
Под MinGw для школьников небольшую либку пилю для примера, чтобы после завершения приложения ни чего не закрывалось "press any key". В Code::Blokcs есть галочка по умолчанию, но работает только для консоли, а для "gui application" закрывается. В общем такая затычка.
foxes
Это можно реализовать только хаками вроде __attribute__((destructor)) или возней с секциями в VC.
foxes
Пробовал #pragma startup?
VoidSpirit
Нет еще, попробую позже.
#define main appEntryPoint
а потом в либе
main()
{
appEntryPoint();
}
пользоваться только в случае нарушения чувства прекрасного))
VoidSpirit
> Пробовал #pragma startup?
Походу не пашет
warning: ignoring #pragma exit _aExit
Тема в архиве.