🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.c
10 messages
10 total messages Started by Borneq Tue, 01 Jan 2019 04:13
Emulacja C++ przez C
#309787
Author: Borneq
Date: Tue, 01 Jan 2019 04:13
8 lines
1233 bytes
Klasy można emulować przez struktury, wywołanie metod przez funkcje, z 
których pierwszy parametr to wskaźnik na strukturę.
Metody wirtualne - trzeba tablicę funkcji, a obiekt będzie strukturą, 
gdzie pierwsze pole to wskaźnik na tę tabelę.
Dziedziczenie - trudno, pola będą się powtarzać
Hermetyzacja - wszystkie publiczne
Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak 
setjmp/longjmp
Re: Emulacja C++ przez C
#309789
Author: Sebastian Biały
Date: Tue, 01 Jan 2019 15:47
7 lines
1185 bytes
On 01/01/2019 05:13, Borneq wrote:
> Klasy można emulować [...]

Już to wymyślili, np. nazywało się SasC i było popularne w latach 90tych 
na maszynach takich jak Amiga choć mało kto wtedy pisał w C++. 
Zakończyło się, o ile pamiętam, częściowym wsparciem dla C++ którego 
nikt na poważnie nie chciał.
Re: Emulacja C++ przez C
#309788
Author: AMX
Date: Wed, 19 Apr 2023 21:31
11 lines
1040 bytes
On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <borneq@antyspam.hidden.pl> wrote:
> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak 
> setjmp/longjmp

Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
ale wystarczająco skuteczne.


-- 
adres w rot13
Nyrxfnaqre Znghfmnx r-znk@b2.cy
Re: Emulacja C++ przez C
#309790
Author: Ghost
Date: Fri, 21 Apr 2023 04:49
10 lines
1544 bytes
W dniu 19.04.2023 o 23:31, AMX pisze:
> On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <borneq@antyspam.hidden.pl> wrote:
>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>> setjmp/longjmp
> 
> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
> ale wystarczająco skuteczne.

Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak 
odwijania stosu z wolaniem destruktorow.
Re: Emulacja C++ przez C
#309791
Author: Maciek Godek
Date: Fri, 21 Apr 2023 06:38
12 lines
2134 bytes
piątek, 21 kwietnia 2023 o 06:49:05 UTC+2 Ghost napisał(a):
> W dniu 19.04.2023 o 23:31, AMX pisze:
> > On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <bor...@antyspam.hidden.pl> wrote: 
> >> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak 
> >> setjmp/longjmp 
> > 
> > Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch 
> > ale wystarczająco skuteczne.
> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak 
> odwijania stosu z wolaniem destruktorow.

Z drugiej strony, w języku C nie ma destruktorów, więc to raczej bez różnicy.
Re: Emulacja C++ przez C
#309792
Author: Kamil Jońca
Date: Fri, 21 Apr 2023 06:42
22 lines
2072 bytes
Maciek Godek <godek.maciek@gmail.com> writes:

> piątek, 21 kwietnia 2023 o 06:49:05 UTC+2 Ghost napisał(a):
>> W dniu 19.04.2023 o 23:31, AMX pisze:
>> > On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <bor...@antyspam.hidden.pl> wrote: 
>> >> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak 
>> >> setjmp/longjmp 
>> > 
>> > Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch 
>> > ale wystarczająco skuteczne.
>> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak 
>> odwijania stosu z wolaniem destruktorow.
>
> Z drugiej strony, w języku C nie ma destruktorów, więc to raczej bez różnicy.

Myślę że pisząc o "wołaniu destruktorów" autor miał na myśli
automatyczne niszczenie obiektów/zwalnianie pamięci, które przy throw
dzieje się magicznie a przy longjmp trzeba o tym myśleć. Mylę się?
KJ

-- 
http://stopstopnop.pl/stop_stopnop.pl_o_nas.html
Re: Emulacja C++ przez C
#309794
Author: Ghost
Date: Fri, 21 Apr 2023 06:53
15 lines
1865 bytes
W dniu 21.04.2023 o 08:38, Maciek Godek pisze:
> piątek, 21 kwietnia 2023 o 06:49:05 UTC+2 Ghost napisał(a):
>> W dniu 19.04.2023 o 23:31, AMX pisze:
>>> On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <bor...@antyspam.hidden.pl> wrote:
>>>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>>>> setjmp/longjmp
>>>
>>> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
>>> ale wystarczająco skuteczne.
>> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak
>> odwijania stosu z wolaniem destruktorow.
> 
> Z drugiej strony, w języku C nie ma destruktorów, więc to raczej bez różnicy.

"emulacja c++"
Re: Emulacja C++ przez C
#309793
Author: Ghost
Date: Fri, 21 Apr 2023 06:54
22 lines
2204 bytes
W dniu 21.04.2023 o 08:42, Kamil Jońca pisze:
> Maciek Godek <godek.maciek@gmail.com> writes:
> 
>> piątek, 21 kwietnia 2023 o 06:49:05 UTC+2 Ghost napisał(a):
>>> W dniu 19.04.2023 o 23:31, AMX pisze:
>>>> On Tue, 1 Jan 2019 05:13:44 +0100, Borneq <bor...@antyspam.hidden.pl> wrote:
>>>>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>>>>> setjmp/longjmp
>>>>
>>>> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
>>>> ale wystarczająco skuteczne.
>>> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak
>>> odwijania stosu z wolaniem destruktorow.
>>
>> Z drugiej strony, w języku C nie ma destruktorów, więc to raczej bez różnicy.
> 
> Myślę że pisząc o "wołaniu destruktorów" autor miał na myśli
> automatyczne niszczenie obiektów/zwalnianie pamięci, które przy throw
> dzieje się magicznie a przy longjmp trzeba o tym myśleć. Mylę się?

nie, mialem na mysli wolanie destruktorow, zwalnianie pamieci to rzecz 
wrtorna
Re: Emulacja C++ przez C
#309795
Author: AMX
Date: Fri, 21 Apr 2023 19:58
22 lines
1439 bytes
On Fri, 21 Apr 2023 06:49:01 +0200, Ghost <Ghost@heaven.net> wrote:
>>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>>> setjmp/longjmp
>> 
>> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
>> ale wystarczająco skuteczne.
>
> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak 
> odwijania stosu z wolaniem destruktorow.
>

W C - gdzie jest setjmp/longjmp - nie ma destruktorów, więc to,
że nie są wywoławane nie wydaje się być istotne =:-) 

W C++ mamy destruktory i używamy throw-catch.

   AMX


-- 
adres w rot13
Nyrxfnaqre Znghfmnx r-znk@b2.cy
Re: Emulacja C++ przez C
#309796
Author: Ghost
Date: Sat, 22 Apr 2023 06:37
21 lines
1927 bytes
W dniu 21.04.2023 o 21:58, AMX pisze:
> On Fri, 21 Apr 2023 06:49:01 +0200, Ghost <Ghost@heaven.net> wrote:
>>>> Natomiast czym można by zastąpić wyjątki? w C było coś takiego jak
>>>> setjmp/longjmp
>>>
>>> Było, jest, działa. Użycie jest mniej przejrzyste niż throw-catch
>>> ale wystarczająco skuteczne.
>>
>> Ta skutecznosc ma sporo morderczych (nomen omen) wyjatkow, np. brak
>> odwijania stosu z wolaniem destruktorow.
>>
> 
> W C - gdzie jest setjmp/longjmp - nie ma destruktorów, więc to,
> że nie są wywoławane nie wydaje się być istotne =:-)
> 
> W C++ mamy destruktory i używamy throw-catch.
> 
>     AMX

no dzieki, czlowiek nawet po 35 latach programowania w c++ moze sie 
czegos nauczyc
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads