Название: quit или exit ? Отправлено: Alf от Август 25, 2011, 16:16 Вот это бесконечный цикл, программа не завершится никогда:
Код: while( true ) { А так завершится при первом заходе: Код: while( true ) { Вопрос: почему в первом случае программа не завершается ? Из справки: Цитировать void QCoreApplication::quit () [static slot]. ... Equivalent to calling QCoreApplication::exit(0). Название: Re: quit или exit ? Отправлено: Sancho_s_rancho от Август 25, 2011, 16:22 Очередь событий?
пи.си. QCoreApplication::exit(0) != exit(0) Название: Re: quit или exit ? Отправлено: Alf от Август 26, 2011, 16:48 Т.е. exit(0) в моём случае - это std::exit(0) ? (если вызов функции выполняется внутри метода класса, производного от QWidget, например).
В каких типичных случаях такое завершение программы может быть не корректным ? (вызов деструкторов и т.п.) Название: Re: quit или exit ? Отправлено: Sancho_s_rancho от Август 26, 2011, 19:19 Т.е. exit(0) в моём случае - это std::exit(0) ? (если вызов функции выполняется внутри метода класса, производного от QWidget, например). А если себе в ногу выстрелить, то в кость попадешь или в мегкие ткани? Зависит от ситуации. В любом случае пуля - не хирургический инструмент.В каких типичных случаях такое завершение программы может быть не корректным ? (вызов деструкторов и т.п.) Qt - это фреймвок, а не библиотека. Отличие фреймвока от библиотеки в том, что в при использовании фреймвока он вызывает твой код, а при работе с библиотекой твой код дергает библиотечные функции. Если сказано вместо main писать QApplication, а выходить из программы QApplication::quit(), то так и надо делать. Если есть свободное время на исследования, то можно открыть исходный текст Qt и разобраться в тонкостях вопроса. Название: Re: quit или exit ? Отправлено: lit-uriy от Август 26, 2011, 20:40 >>В каких типичных случаях такое завершение программы может быть не корректным ?
Скорее ни в каких. Название: Re: quit или exit ? Отправлено: LisandreL от Август 26, 2011, 21:13 В каких типичных случаях такое завершение программы может быть не корректным? Например, самый очевидный случай:Цитировать int main(int argc, char *argv[]) тут наше приложение останется без финализации. { QApplication app(argc, argv); Widget w; w.show(); int result = app.exec(); someFinalisation(); return result; } |