Article View: pl.comp.lang.c
Article #836Re: Rezerwacja pamieci
From: Pawel Piotrowski
Date: Tue, 27 Jan 1998 08:24
Date: Tue, 27 Jan 1998 08:24
67 lines
4358 bytes
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-mailReferences:
<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