Форум программистов, компьютерный форум CyberForum.ru

setjump/longjump - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ консольная программа секундомер с остановкой и снова запуском http://www.cyberforum.ru/cpp-beginners/thread778262.html
Здарова господа! Интересно от есть допустим функция секундомер, при запуске в консоли работает цикл while и с задержкой выводится число потом инкриминируется и следующее. Вопрос, а можно как нибудь сделать управление этой функцией допустим остановить, а затем снова запустить????? (функция - это метод обьекта, в котором сохраняется время отчитаное) Или то ко как то через потоки нужно????
C++ Функция что находит количество элементов массива помогите написать функцию getNumberOfItemsEqualToValues​​, что находит количество элементов массива, входящих в заданные значения. Функция принимает на вход массив целых items, его длину, массив заданных значений targetValues ​​и длину этого массива. функция возвращает количество элементов массива items, содержащиеся в массиве targetValues​​. Предположите, что значение в массиве targetValues... http://www.cyberforum.ru/cpp-beginners/thread778251.html
C++ Функция для нахождения количества элементов в бинарном дереве
Помогите написать функцию для нахождения количества элементов в бинарном дереве. реализуйте функцию итеративно и рекурсивно. #include <stack> class Node { public: int value; Node* left; Node* right; }; int count(Node tree) { ... } int main()
Бинарное дерево C++
Здравствуйте, очень нужна ваша помощь ... нужна программа для работы с бинарным деревом, а именно (создание , добавление элемента, удаление элемента и узла) Но есть особый принцип работы который я сейчас опишу Вот сначала имеем пустое дерево затем добавляем элемент в корень потом добавляем второй элемент ниже и перед тем как его разместить на дереве сравниваем его с верхним элементом если он...
C++ Рендеринг Flash своими силами http://www.cyberforum.ru/cpp-beginners/thread778222.html
Задумался о создании Flash GUI. Но вот ведь беда, Adobe не делится библиотеками воспроизведения ихнего .swf, а Autodesk зажала свой Scaleform. Все плохо, но еще ужасней то, что флешку желательно рендерить кроссплатформенно, что отметает ActiveX. Вот и встает вопрос, неужели разбирать бедную swf-шку вручную? Попробовал разобраться в спецификации SWF но там черт ногу сломит. Быть может у адобовцев...
C++ Удалить часть текста в круглых скобках В заданном тексте удалить часть текста, заключенную в круглые скобки (скобки не удалять). Не поможите? подробнее

Показать сообщение отдельно
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
04.02.2013, 00:17  [ТС]     setjump/longjump
~OhMyGodSoLong~, вот сделал вроде по аналогии с вашим кодом(что вы дали), но видно не судьба мне...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <setjmp.h>
using namespace std;
 
class A
{
    private:
        int a, b;
 
    public:
        A():a(4), b(5) {}
        ~A() {  wcout << L"Деструктор А\n"; }
        void print()
        {
            wcout << "a: " << a << "\tb: " << b << "\n\n";
        }
};
 
jmp_buf xen;
 
void fun3(void)
{
    A c;
    longjmp(xen, 0);
}
 
void fun2(void)
{
    A b;
    fun3();
}
 
void fun1(void)
{
    A a;
    fun2();
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));
    wcin.imbue(locale(".866"));
 
    if (!setjmp(xen)) {
        fun1();
    }
    else {
        std::cout << "Exception!\n";
    }
 
    return 0;
}
Заранее благодарю!

Добавлено через 1 час 33 минуты
~OhMyGodSoLong~, сделал по другому и вроде все работает, спасибо Вам за помощь но возник другой вопрос, вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// obr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <setjmp.h>
using namespace std;
 
class A
{
    private:
        int a, b;
 
    public:
        A():a(4), b(5) {wcout << L"Конструктор А\n";}
        ~A() {  wcout << L"Деструктор А\n"; }
        void print()
        {
            wcout << "a: " << a << "\tb: " << b << "\n\n";
        }
};
 
class B
{
    private:
        int a, b;
 
    public:
        B():a(4), b(5) {}
        ~B() {  wcout << L"Деструктор B\n"; }
        void print()
        {
            wcout << "a: " << a << "\tb: " << b << "\n\n";
        }
};
 
class C
{
    private:
        int a, b;
 
    public:
        C():a(4), b(5) {}
        ~C() {  wcout << L"Деструктор C\n"; }
        void print()
        {
            wcout << "a: " << a << "\tb: " << b << "\n\n";
        }
};
 
jmp_buf xen;
 
void fun3(void)
{
    longjmp(xen, 0);
    A a1;
}
 
void fun2(void)
{
    fun3();
    B b2;
}
 
void fun1(void)
{
    fun2();
    C c1;
}
 
void fun6(void)
{
    throw A();
    A a1;
}
 
void fun5(void)
{
    fun6();
    B b2;
}
 
void fun4(void)
{
    fun5();
    C c1;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale(".866"));
    wcin.imbue(locale(".866"));
 
    if (!setjmp(xen)) {
        fun1();
    }
    else {
        std::cout << "Exception!\n";
    }
 
    try{
        fun4();
    }
 
    catch(...)
    {
        wcout << L"С конструкторами!\n\n";
    }
 
    return 0;
}
сделал как вы сказали, 3 функции для прыжка и три для throw, но не могу понять почему throw работает странно, вот что выдает:

C++
1
2
3
4
5
6
Exception!
Конструктор А
Деструктор А
С конструкторами!
 
Деструктор А                                <----- Откуда это берется?
Заранее спасибо за помощь!
 
Текущее время: 05:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru