В VC++ и GCC main
не является настоящей точкой входа в программу; но мы можем сбросить реальную точку входа программы с помощью аргументов компилятора -ENTRY
и -Wl,-eentry
.Как обеспечить выполнение функции перед любым глобальным переменным?
Например: реальная запись piont по умолчанию - mainCRTStartup
в VC++; то есть mainCRTStartup
будет вызываться до main
.
Мой вопрос: Если у меня есть несколько глобальных переменных на C++ в моей программе, они гарантированно НЕ будут инициализированы до тех пор, пока не закончится mainCRTStartup
?
Проблема фон:
У меня есть рамки закрытого источника, который содержит ошибку в своем глобальном переменном ctors. Я могу исправить ошибку, если мой код исправления может выполнить перед глобальными переменными ctors .
Глобальные переменные инициализируются * по * 'mainCRTStartup'. Это одна из задач, которые она выполняет, перед вызовом 'main'. 'mainCRTStartup' никогда не« заканчивается »- он вызывает' exit() 'когда возвращается' main'. –