🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #997

Zamykam dyskusje na temat rzutowania wskaznikow

#997
From: Michal Malecki
Date: Mon, 02 Feb 1998 14:20
72 lines
4271 bytes
Krzysztof Swiatkowski <hobbit@dom.vr.pl> wrote:
: On Wed, 28 Jan 1998 16:22:13 +0100, in pl.comp.lang.c Marek Kotowski
: <mkot@imm.org.pl> wrote:

:>(void)printf("Tekst");
:>(void)strcat(s,p);
:>(void)strcpy(r,t);
:>
:>Programiscie wbito do glowy, ze jak wartosc zwracana przez funkcje
:>jest ignorowana, to trzeba to zaznaczyc pustym rzutem (void). I tak
:>programista pstrzy takimi rzutami caly program, ktory staje sie malo
:>czytelny.  
A niech to szlag. Zawsze sadzilem, ze pisanie "printf( ...cos... );" to jest
olewanie wartosci zwracanej. A tu masz! Niejawna konwersja typu int na void.
Jezeli void jest rownoprawnym typem (jak by z tego wynikalo), to ciekawe
dlaczego nie mozna tworzyc zmiennych typu void.

:>Rzecz w tym, by stosowac rzuty tam, gdzie sa niezbedne
:>(w przypadku funkcji malloc rzut jest wlasnie zbedny).
: W sensie formalnym może tak ale w kwestii czytelności programu lepiej go
: wstawić. IMVHO

: p = (char*) malloc( 100 * sizeof( char ) );
: jest przejrzystsze od
: p = malloc( 100 * sizeof( char ) );
: szczególnie jeżeli chodzi o analizę kodu długiej funkcji.

A juz calkiem szczegolnie, jak taka sekwencje zaplaczesz w jakims sporym
zagniezdzeniu wywolan funkcji. Szczyt czytelnosci moglbym rzec.

Mam dla ciebie propozycje. Poczytaj najpierw plik stdarg.h zanim zaczniesz
pisac takie bzdury na temat czytelnosci. Tam znajdziesz bardzo duzo takich
"jawnych rzutowan". Ktore oczywiscie sa tam niestety niezbedne.
Myslisz, ze dlaczego masz taka prosta rzecz, jak makra va_start i va_arg ?
(Co prawda dla C++ przydaloby sie zrobic nowe makro, va_init zamiast
va_start - bez drugiego parametru).

: Hi,hi. Nie zdawałbym się tak bardzo na wiedzę programistów. Wiedza a jej
: stosowanie to nie to samo. Za wiele moich programów nie daje się analizować
: po pewnym czasie. (pomijając te które miały zmienne x? :-) )
Jezeli czytelnosc twoich programow wyglada tak, jak to tutaj przed chwila
pokazales, to wcale sie nie dziwie.

A teraz juz tak w kwestii formalnej: mam nadzieje, ze wyjasnilismy sobie
dokladnie wszystko na temat rzutowania wskaznikow i funkcji malloc.
Proponuje wiec zanotowac co nastepuje:

1. W C, typ 'void*' nie wymaga rzutowania na inny typ wskaznikowy. Co nie
zabrania programiscie w zaleznosci od chciejstwa dokonywac rzutowania.

2. W C++, typ 'void*', jak kazdy prosty typ wskaznikowy wymaga rzutowania.
Jednak w C++ nie stosuje sie funcji malloc do przydzialu pamieci, nawet
w programach przenoszonych z C. Jezeli ktos uwaza, ze malloc robi to dobrze,
to powinien wywolac ja w przeciazonym operatorze new. Poniewaz przy kompilacji
kompilatorem C++ takiego programu pojawia sie warningi, to przeciez zamiast
poprawiac wywolanie malloc przez rzutowania, lepiej od razu zamienic to na new.
Ale takie operacje jest sens robic tylko w programach, w ktorych planuje sie
rozwijanie ich uwzgledniajac mozliwosci C++. Inaczej nie ma to sensu, gdyz
raczej nie ma takich sytuacji, ze ktos ma kompilator C++ a nie ma kompilatora
C.

I to - mam nadzieje - konczy cala dyskusje na temat stosowalnosci rzutowania
wskaznikow.

Wszystkich uczestnikow dyskusji serdecznie pozdrawiam,


-- 
.---.     .   . - Michal Malecki <mmalecki@technologist.com>/The things that
\___  ,-. | , |- ,-. ,-  mUd: zly.mud.org.pl 4000.         /can't destroy you
    \ |-' |<  |  | | |   uRl: www.kis.p.lodz.pl/~sektor   /make you
`---' `-' ' ` `' `-' '   pGp: sektor@zly.kis.p.lodz.pl   /stronger...
Technical Details
Message-ID: <6b4kmn$477@polonez.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mail
References: <34CCAF18.4877@imm.org.pl> <6akmcl$nua@polonez.man.lodz.pl> <01bd2bec$6a5259e0$90baccc2@karpierz.dyn.ml.org> <34CFB490.42E5@bdk.lublin.pl> <34CF4D25.40AE@imm.org.pl> <34d2cba7.10320162@news.nask.org.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mail
From: Michal Malecki <sektor@zly.kis.p.lodz.pl>
Newsgroups: pl.comp.lang.c
Subject: Zamykam dyskusje na temat rzutowania wskaznikow
Date: 2 Feb 1998 14:20:07 GMT
Lines: 72
Message-ID: <6b4kmn$477@polonez.man.lodz.pl>
References: <34CCAF18.4877@imm.org.pl> <6akmcl$nua@polonez.man.lodz.pl> <01bd2bec$6a5259e0$90baccc2@karpierz.dyn.ml.org> <34CFB490.42E5@bdk.lublin.pl> <34CF4D25.40AE@imm.org.pl> <34d2cba7.10320162@news.nask.org.pl>
NNTP-Posting-Host: sektor@zly.kis.p.lodz.pl
Mime-Version: 1.0
User-Agent: tin/pre-1.4-980105 (UNIX) (SunOS/5.5.1 (i86pc))
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit