![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Пишу сервер... В нем во многих местах идет чтение из сокета. И тут я узнаю, что соединение закрыто, то есть нужно выйти из цикла... Но проблема в том, что это узнает моя функция read, а она может быть вызвана из другой функции и т. д... Не делать же типа того:
while(1) { int i = read(socket); if(i == -1) break; int j = read(socket); if(j == -1) break; int lost = 0; for(int k = 0; k < 20; k++) { a[k] = read(socket); if(a[k] == -1) { lost = 1; break;} } if(lost) break; } |
|||
|
||||
boombick |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 20.4.2005 Где: Moscow, Russia Репутация: нет Всего: 9 |
А что это за язык? и почему в общих вопросах по никсам?
-------------------- |
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Модератор: тема перенесена в общие вопросы по С/С++
Посмотри в стандартной библиотеке Си break и setjmp.h |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Блин, я именно про Линуксы спрашивал...
|
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Вопрос к линуксу не имеет отношения. Это вопрос по ЯП. |
|||
|
||||
likehood |
|
|||
666 ![]() ![]() Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
goto
|
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
А эти джампы не такие медленные как goto? А break не понял в каком контексте использовать? Он вроде не выйдет из вложенных функций...
|
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Не худший вариант в случае одной функции.
для многих не очень хорошо работает. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Гм... А где тут медлительность может быть? По идее, просто начинает выполняться другая функция (в 2-х словах, если). |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
goto вообще быстрее (или по крайней мере не медленнее) вызова функции (goto = jmp, вызов функции = call) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: нет Всего: 149 |
Товарищи, а почему бы просто не вызвать
Правда это будет выход только из одной вложенной функции, но это никак подругому не сделаешь, кроме как обрабатывая во внешней функции возвращаемое значение. Механизм exception-ов вшит в сам язык, так что он может разворачивать стек (что он и делает), а вот программно так не сделать P.S. Все мое личное, ИМХО |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
ivashkanet,
пример
это я к чему, goto позволяет логично и наглядно решить проблему, которая описана выше и пусть противники goto найдут более понятное решение ![]() Это сообщение отредактировал(а) MAKCim - 11.4.2007, 18:54 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Я не уверен в этом. Можно реализовать какую-нибудь функции exception(bla-bla); А там обрабатывать bla-bla и иметь набо goto. Хотя я exception практически не юзал. |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 3 Всего: 317 |
powerfox, можно вручную реализовать и классы, и наследование... только на фига оно надо, если есть C++ ![]() кроме того, есть переходный момент между C и C++, называется objective C. может быть это то, что нужно человеку...но я правда не понимаю зачем писать что-то на Си, если можно использовать готовые средства Си++. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |