Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Какая функция выполняется пер


Автор: TeeT 8.12.2005, 10:32
А как же стандарт, того что функция main(), выполнится первой smile
Код

#include <iostream.h>
#include <stdlib.h>

class mc
{
 public:
  mc(){
   cout<<"Constructor\n"; system("pause");
   exit(0);
  };

 ~mc(){
  cout<<"Destructor\nWere is the main???\n"; system("pause");
 };
};

mc m;

int main(int argc, char* argv[])
{
 cout<<"MAIN";
 system("pause");
  return 0;
}


Разве это где нибудь написано????

Автор: Neitron 8.12.2005, 10:34
По стандарту, сначало создаются глобальные переменные, а потом вызывается main().
P.S никогда для "этого" не пиши system("pause")

Автор: TeeT 8.12.2005, 10:41
Цитата(Neitron @ 8.12.2005, 10:34)
P.S никогда для "этого" не пиши system("pause")

Ну а кусок из книги можешь показать где это написано?? smile

А чем пользоватся, если не system-ом smile

Автор: Void 8.12.2005, 10:54
Цитата(Neitron @ 8.12.2005, 12:34)
По стандарту, сначало создаются глобальные переменные, а потом вызывается main().

Кстати, нет. До вызова main должна произойти только zero-innitialization, а вызов конструкторов реализация имеет право отложить до первого использования объектов со static storage duration. См. 3.6.2/3.

Автор: Neitron 8.12.2005, 10:57
9.4.1. Страуструп.

Цитата
А чем пользоватся, если не system-ом

Например:
cin >> "";
getch();

Цитата

См. 3.6.2/3.

Не нашел такой главы...
Страуструп. Специальное издание.

Автор: TeeT 8.12.2005, 10:58
А ссылочку можешь, дать, еси да, то дай smile

Автор: Neitron 8.12.2005, 11:00
Я не знаю, где Страуструп есть в электронном виде.

Автор: Void 8.12.2005, 11:01
Цитата(Neitron @ 8.12.2005, 12:57)
Не нашел такой главы...
Страуструп. Специальное издание.

Это была ссылка на стандарт.
Добавлено @ 11:01
Цитата(Neitron @ 8.12.2005, 13:00)
Я не знаю, где Страуструп есть в электронном виде.

Там же где и стандарт. Искать Anatolix wiki в гугле.

Автор: Neitron 8.12.2005, 11:07
Спасибо, но чесно сказать мне все равно на глобальные переменные, так как ничто даже порядок их выполнения, один за другим, стандарт не гарантирует.

Автор: TeeT 8.12.2005, 11:09
Цитата(Neitron @ 8.12.2005, 10:57)
Например:
cin >> "";
getch();

А на размер файлов ты смотрел???
еси пишешь cin>>"" прога не воспринимает Enter и пробел smile
p.S. компилил на Builder 6

Автор: Neitron 8.12.2005, 11:15
system("pause") - заставляет прогамму вызывать дополнительный процесс....

Автор: TeeT 8.12.2005, 11:29
Цитата(Neitron @ 8.12.2005, 11:15)
system("pause") - заставляет прогамму вызывать дополнительный процесс....

Спасибо, конечно, но я system-ом пользуюсь только при написании и отладке программы.

Кстати вот кусок из ХЭЛПА:

Every C and C++ program must have a program-startup function.

Console-based programs call the main function at startup.
Windows GUI programs call the WinMain function at startup.

Where you place the startup function is a matter of preference. Some programmers place main at the beginning of the file, others at the end. Regardless of its location, the following points about main always apply.

Автор: blackofe 8.12.2005, 20:08
все правильно. в хэлпе же не сказано, что кроме функций main или WinMain при старте больше ничего не должно вызываться smile.

кстати, а отладчиком отлаживать слабо? для чего придумали breakpoint'ы?

Автор: nikitao 8.12.2005, 21:56
Бррррррррр,я запутался.
1.TeeT ,пиши в программе вместо
Код

system("PAUSE");

так
Код

getch();

Это необходимо не только из-за процессов,но и из-за переносимости кода прежде всего.

2.Вопрос smile :
Что такое стандарт?В смысле это международный документ или что?Страуструп и ему подобные описывают стандарт ,но это не сам стандарт.Соответственно где сам стандарт и стоит ли его читать(Есть ли там что то полезное или все Страуструп описал в своем издании С++). smile

3.В инете нет 3 издания Страуструпа(по моим сведениям),но вот 2 точно есть.Могу линк сбросить если надо.

Автор: Void 8.12.2005, 22:04
Цитата(nikitao @ 8.12.2005, 23:56)
Что такое стандарт?В смысле это международный документ

Да.

Цитата(nikitao @ 8.12.2005, 23:56)
Соответственно где сам стандарт

См. выше.

Цитата(nikitao @ 8.12.2005, 23:56)
и стоит ли его читать

Полезен для уточнения многих вопросов. Можно использовать его как ultima ratio в любых спорах по поводу C++.
Читать подряд - нет, если не хочешь, чтобы тебя увезли санитары в рубашке с не по росту длинными рукавами.

Цитата(nikitao @ 8.12.2005, 23:56)
Есть ли там что то полезное или все Страуструп описал в своем издании С++)

В TC++PL Страуструпа дан огромный объем информации, но некоторые тонкости опущены.

Цитата(nikitao @ 8.12.2005, 23:56)
В инете нет 3 издания Страуструпа(по моим сведениям)

Русского нет, английский вариант есть.

Автор: blackofe 8.12.2005, 22:07
nikitao
я брал здесь: http://anatolix.naumen.ru/Books/Standard?v=17wu

а страуструп - это, конечно, не стандарт. это описание некоего stroustrup c++ ;).

Автор: TeeT 9.12.2005, 09:26
Цитата(blackofe @ 8.12.2005, 22:07)
а страуструп - это, конечно, не стандарт. это описание некоего stroustrup c++ ;).

Ты прав, черт побери!!! smile

А за ссылочку пасиба.

Автор: nikitao 9.12.2005, 16:08
Void,blackofe, спасибо.

Автор: blackofe 9.12.2005, 19:05
nikitao, TeeT, не за что. тем более, что ссылку-то я нашел на этом же форуме smile. поиск рулит! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)