Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Почему глобальный объект, объявленный до main, конструируется в ней? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Помогите разобраться с задачей, решение должно быть в структуре http://www.cyberforum.ru/cpp-beginners/thread351088.html
Помогите разобраться с задачей, решение должно быть в структуре задача.По данным сведениям об учениках класса определить среднюю массу мальчиков .Кто из них самый тяжелый
C++ Даны действительные числа x,y. Определить, принадлежит ли точка с координатами x,y заштрихованной части плоскости Даны действительные числа x,y. Определить, принадлежит ли точка с координатами x,y заштрихованной части плоскости. Прошу помочь с выведением формулы для определения, принадлежит ли точка... http://www.cyberforum.ru/cpp-beginners/thread351087.html
C++ class Point
#include<iostream> #include<math.h> #include<stdlib.h> using namespace std; class Point { Point(float,float); ~Point(){}
C++ создание фигур
создать фигуры треугольник, квадрат и прямоугольник, используя класс точка, фигуры вывести на экран mfc, помогите пожалуйсто с классом фигура что и как пишется #include "iostream" #include...
C++ Структуры: Организовать базу данных для спортивного клуба http://www.cyberforum.ru/cpp-beginners/thread351057.html
Организовать базу данных для спортивного клуба со следующей информацией про штангистов: – ФИО; – дата рождения (дд:мм:рррр); – вес. Вывести на экран список спортсменов, отсортированный по весовым...
C++ Сортировка файлов Здравствуйте уважаемые форумчане)) С праздником Вас... Вот кто нибудь подскажет как сортируются файлы? методы Трех ленточную мне двли и БМ(Боура моура) Вот у кого может пример есть? на СИ\С++\С#... подробнее

Показать сообщение отдельно
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
13.09.2011, 19:43
Результаты экспериментов.

Откопал MinGW 3.4.5 и GDB 6.8
В этой связке у меня работает не так, как у ТС.
Если установить breakpoint на имя main или на адрес, который выводится потом в printf (это 2 разных места) то в любом случае к моменту остановки слово konstruktor уже выведено.
Если смотреть ассемблерный код, то внутри функции main можно увидеть вызов функции __main.
Функция __main проверяет, вызывалась ли она уже, и если нет, то вызывает конструкторы глобальных объектов (функция __do_global_ctors).
Так что формально, вызов конструкторов возможен уже после входа в main.
Но.
Первый раз функция __main вызывается на этапе инициализации из функции __mingw_CRTStartup, ещё до вызова функции main
Так что в моей версии конструкторы вызываются до main, как и должно быть.

Но программисту все эти тонкости всё-равно ни к чему, если всё работает как надо.

Кстати, MinGW 4.5.2 строит код точно так же, а вот в Linux/x86_64 GCC 4.5.1 никаких посторонних вызовов внутри функции main не обнаружено.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru