Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2011, 22:19   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию выход из программы без return

всем доброго времени суток
как известно при вызове return происходит выход из функции в том числе и из главной
Код:
int main ()
{
return 0;

}
а как быть если при определенном условии надо выйти из программы (например ошибка загрузки изображения), но вся загвоздка в том что это условие находится в нутри функции.
если использовать return произойдет выход из этой функции, а не из главной. как тут быть?
я придумал такой вариант
Код:
int func ()
{
    if (!img)//ошибка, тут надо выйти из программы
    return 1;
    else
    return 0;
}
int main ()//главная функция
{
    //
    if (1==func())
    {
        return 1;
    }
    //тут код 
    //программы
    return 0;
}
но этот способ каряво выглядит. особенно если эта функция является методом класса.

Последний раз редактировалось SAMOUCHKA; 03.10.2011 в 22:29.
SAMOUCHKA вне форума Ответить с цитированием
Старый 03.10.2011, 22:34   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
но этот способ каряво выглядит
и чем же это коряво? это проверка значения, возвращаемого функцией. все так делают.
если хотите сразу закрывать программу, можно использовать exit, например.
counter вне форума Ответить с цитированием
Старый 03.10.2011, 22:51   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
и чем же это коряво? это проверка значения, возвращаемого функцией. все так делают.
если хотите сразу закрывать программу, можно использовать exit, например.
вызвал метод класса и етим все сказано. а тут надо проверки делать. хочу чтоб все в нутри класса было.

спасибо! теперь красивее будет
SAMOUCHKA вне форума Ответить с цитированием
Старый 03.10.2011, 23:05   #4
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
Сообщение от SAMOUCHKA Посмотреть сообщение
вызвал метод класса и етим все сказано
что этим сказано? а если снаружи нужно узнать, что произошло в объекте? тоже программу закрывать будете изнутри, а вдруг без этого программа тоже работать может? кому такие программы нужны будут, если они при малейшем чихе завершаются?
я вас еще огорчу (или наоборот - помогу), есть еще такой механизм как обработка исключений, который позволяет обработать нештатные ситуации.
counter вне форума Ответить с цитированием
Старый 03.10.2011, 23:40   #5
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

SAMOUCHKA

если использовать return произойдет выход из этой функции, а не из главной. как тут быть?
я придумал такой вариант ...


если по-колхозному, то можно и так.
а правильный способ - через throw и try/catch
Rififi вне форума Ответить с цитированием
Старый 04.10.2011, 19:04   #6
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
что этим сказано? а если снаружи нужно узнать, что произошло в объекте? тоже программу закрывать будете изнутри, а вдруг без этого программа тоже работать может? кому такие программы нужны будут, если они при малейшем чихе завершаются?
я вас еще огорчу (или наоборот - помогу), есть еще такой механизм как обработка исключений, который позволяет обработать нештатные ситуации.
спасибо за науку! НО позвольте одно возражение- что если эта функция является конструктором класса? он ведь ни чего не возвращает
SAMOUCHKA вне форума Ответить с цитированием
Старый 04.10.2011, 22:30   #7
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
а правильный способ - через throw и try/catch
если code-style позволяет использование исключений, а компилятор rtti
alex_x_x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход из формы без сохранения изменения Swatch Microsoft Office Access 5 18.12.2018 18:33
Выход программы. ZvEr_HaCkEr Свободное общение 26 16.10.2010 21:00
Выход из программы в событие FormCreate KoBRaAndrey Общие вопросы Delphi 2 18.01.2010 20:58
Выход из программы relav_ Общие вопросы Delphi 18 15.03.2008 01:36
Выход из программы Slash Общие вопросы Delphi 8 24.03.2007 07:53