🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Rezerwacja pamieci

#836
From: Pawel Piotrowski
Date: Tue, 27 Jan 1998 08:24
67 lines
4358 bytes
milosz danielewski wrote:
> 
> On Mon, 26 Jan 1998 10:42:14 +0100, Pawel Piotrowski
> <pietras@sopot.lex.pl> wrote:
> 
> >> Z wiekszosci wymienionych przez ciebie cech kompilatora (
> >> char ze znakiem lub bez, pakowanie struktur etc.) dobry programista
> >> _nie_ korzysta bo i po co ?
> >>
> >
> >A czy _dobremu_programiscie_ zdazylo sie napisac procedure konwertujaca
> >rozne standardy 'polskich' znaczkow majac domyslnego char'a ze znakiem ?
> 
>  Dobry programista robi tak:
> #define byte unsigned char

To ja nie rozumiem. To czy korzysta z char ze znakiem czy bez , czy tez
nie. Bo to co widze to makro dla preprocesora, ktore zmieni napisy
'byte' na 'unsigned char'. A to chyba jest wykorzystanie char ze znakiem
lub bez. Ogolnie z Twojego (jeszcze poprzedniego) listu zrozumialem, ze
postulujesz nie przejmowanie sie tego typu  rzeczami jak znak char. Po
prostu piszesz 'char' i program ma dzialac. A to nieprawda, na co
podalem przyklady.

>  Slaby przyklad - DOS i SCO sa na ta sama platforme wiec bajty w
> slowie sa w tej samej kolejnosci. Rozumiem jednak intencje, w
> przypadku little-, big-endian albo czytamy z pliku po bajcie, albo
> stosujemy #ifdef. Nalezy to jednak traktowac jako zlo konieczne a nie
> rzecz, ktora sie wykorzystuje.
> 
>  Obie wymienione powyzej rzeczy nie sa nawet w polowie tak uciazliwe
> jak domyslne pakowanie struktur, na ktorym zdecydowanie latwiej sie
> poslizgnac.

Przyklad ani silny, ani slaby, wziety z zycia. Program skompilowany pod
16 bit DOS, upakowanie struktur do bajta. Struktury 'na zywca ' czytane
z pliku. Program w SCO ma czytac te same dane (bo nikt nie bedzie
tloczyl osobnego CD dla tej platformy (zbyt mala ilosc klientow)).
Program skompilowany z domyslnymi parametrami ( a wiec zgodnie z Twoim
postulatem nie przejmowania sie cechami kompilatora w rodzaju pakowania
struktur) pakuje struktury do 4 bajtow. I nie ma wyjscia, trzeba sie
zaczac interesowac ww. cechami kompilatora, nawet ryzykujac, ze sie
zostanie _zlym_programista_. Oczywiscie zgadzam sie, ze w przypadku
przenoszenia danych na inne platformy - te z 'big endian' sprawy sie
jeszcze bardziej komplikuja, z mozliwoscia upakowania danych do bajta na
tych platformach tez roznie bywa.

Tak wiec, o ile rozumiem intencje, to sugerujesz ze ustawiemie
kompilatorowi opcji aby wszystkie char traktowal bez znaku jest w zlym
stylu, pisanie 'unsigned char' jest w dobrym. Podobnie z pakowaniem
struktur ( te akurat mozna przestawiac przy pomocy #pragm). Tylko , ze w
obydwu przypadkach korzystasz z tego samego mechanizmu, a w dodatku przy
kompilacji w C++ wywolanie np. jakiejkolwiek funkcji z tak przekazanym
parametrem, zadeklarowanym jako 'unsigned char' generuja warning (mowie
tu o BC5 i wlaczeniu pelnego 'warningowania'). Tak wiec
_dobry_programista_ naraza sie kilkadziesiat nic nie znaczacych (tzn.
nie szkodliwych) warningow, miedzy ktorymi moze sie ukryc jakies powazne
ostrzezenie.

Konczac ten przudlugi list - uwazam ze nie da sie _w_pelni_swiadomie_
programowac, nie korzystajac z takic cech kompilatora o ktoryc tu mowa
(i wielu innych o ktorych tu nie bylo mowy).I owszem, ma to zwiazek z
byciem  dobrym lub zlym programista - albo sie wie co sie robi, albo
nie.

Pozdrawiam
Pawel
Technical Details
Message-ID: <34CD99D8.31FC@sopot.lex.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!not-for-mail
References: <34C4F3AB.C34902CC@willow.iie.pz.zgora.pl> <34C5BEC9.2018@imm.org.pl> <34c73f51.1429095@news.icm.edu.pl> <34C70746.46AB@imm.org.pl> <34C7636B.33829801@fuw.edu.pl> <34C77265.11BB@imm.org.pl> <01bd27f3$0b82ce60$2701070a@jark.insert.igo.wroc.pl> <34C89233.435C@imm.org.pl> <01bd2817$afde9240$2701070a@jark.insert.igo.wroc.pl> <34C8C608.7701@imm.org.pl> <34cae9cf.10806741@news.icm.edu.pl> <34C9F9FA.1D66@imm.org.pl> <34cc775c.652640@news.icm.edu.pl> <34CC5A75.6AD@sopot.lex.pl> <34cce72c.1563123@news.icm.edu.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.task.gda.pl!not-for-mail
From: Pawel Piotrowski <pietras@sopot.lex.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Rezerwacja pamieci
Date: Tue, 27 Jan 1998 09:24:56 +0100
Organization: Centrum Informatyczne TASK
Lines: 67
Message-ID: <34CD99D8.31FC@sopot.lex.pl>
References: <34C4F3AB.C34902CC@willow.iie.pz.zgora.pl> <34C5BEC9.2018@imm.org.pl> <34c73f51.1429095@news.icm.edu.pl> <34C70746.46AB@imm.org.pl> <34C7636B.33829801@fuw.edu.pl> <34C77265.11BB@imm.org.pl> <01bd27f3$0b82ce60$2701070a@jark.insert.igo.wroc.pl> <34C89233.435C@imm.org.pl> <01bd2817$afde9240$2701070a@jark.insert.igo.wroc.pl> <34C8C608.7701@imm.org.pl> <34cae9cf.10806741@news.icm.edu.pl> <34C9F9FA.1D66@imm.org.pl> <34cc775c.652640@news.icm.edu.pl> <34CC5A75.6AD@sopot.lex.pl> <34cce72c.1563123@news.icm.edu.pl>
Reply-To: pietras@sopot.lex.pl
NNTP-Posting-Host: szmondo.lex.pl
Mime-Version: 1.0
X-Mailer: Mozilla 3.0C-E-KIT  (Win95; I)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit