Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C] Зыкрытие всех функции одной коммандой. 
:(
    Опции темы
ressac
Дата 13.4.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



Вот например есть функции  MAIN, A, B, C.

MAIN вызывает А а она  В в свою очередь С и теперь в  С  я просто хочу закрыть все функции и вернутся СРАЗУ в MAIN, это вообще возможно?

спасибо!


PM MAIL   Вверх
archimed7592
Дата 13.4.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



throw?

Добавлено через 27 секунд
ooops... не заметил, что C без ++ smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
fantast
Дата 13.4.2007, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.12.2006
Где: минск, столица на шей Родины

Репутация: 2
Всего: 2



нет, можно только сразу выйти из программы
--------------------
Эпитафия: Он старался.                                   Неизвестный
PM MAIL   Вверх
apook
Дата 13.4.2007, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



А запуском функций после выхода из маин не интересуетессь?
 smile smile smile 
Код

//#include <stdafx.h>
#include <stdlib.h>
#include <stdio.h>


void func1( void )
{
printf( "Function number 1\n" );
}
void func2( void )
{
printf( "Function number 2\n" );
}

int main(void)
{
//послать функцию выхода
atexit( func1 );
//послать функцию выхода
atexit( func2 );
printf("End of main ...\n");
return 0;
}

а по твоему вопросу я не задавался че-то назад пройди цепочку и все
функция же возвращает что-то ставиш условие если  C возвратила false
в B то B возвращает false в A(при этом ни-чего не делая кроме return false)
а A выходит в main 


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
powerfox
Дата 14.4.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



ressac: goto, setjump.h.
Ещё можно что-то типа:

Код

int f1()
{
 if (f(2) == -1)
   return -1; 
 someCode;
}
int f2()
{
 if ( (f3) == -1)
   return -1;
 SomeCODE
}
 


И так далее.


--------------------
user posted image
PM WWW   Вверх
Xenon
Дата 14.4.2007, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



atexit самый нормальный вариант здесь. Сбработает даже  при exit().


--------------------
user posted image  
PM MAIL   Вверх
fantast
Дата 14.4.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.12.2006
Где: минск, столица на шей Родины

Репутация: 2
Всего: 2



Цитата(Xenon @  14.4.2007,  01:03 Найти цитируемый пост)
atexit самый нормальный вариант здесь. Сбработает даже  при exit().

да, но нужно вернуться в main,а если вызвать atexit(main), то все данные в майне обнуляться, если только они не сделаны статическими, да и main начнеться с самого начала, а делать все переменные static по-моему не выход, если всего навсего надо выйти из нескольких функций.  smile 

хотя функция atexit весьма любопытна, согласен 

Это сообщение отредактировал(а) fantast - 14.4.2007, 10:26
--------------------
Эпитафия: Он старался.                                   Неизвестный
PM MAIL   Вверх
srd
Дата 14.4.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



fantast, 
Насколько я понял, тебе надо имитировать в Си нечто вроде исключений? Тогда используй, как уже посоветовали, функции setjmp и longjmp.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
fantast
Дата 14.4.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.12.2006
Где: минск, столица на шей Родины

Репутация: 2
Всего: 2



srd, это не мне надо 8))
--------------------
Эпитафия: Он старался.                                   Неизвестный
PM MAIL   Вверх
powerfox
Дата 15.4.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Другого способа в Си нет.


--------------------
user posted image
PM WWW   Вверх
srd
Дата 15.4.2007, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



fantast, 
Сорри, Акелла промахнулся %)




--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0727 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.