🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Watcom: blad kompilatora, czy glupi standard ?

#1109
From: Arkadiusz Dabrowski
Date: Sun, 01 Feb 1998 12:29
37 lines
1749 bytes
Niedawno odkrylem dziwne zachowanie kompilatora Watcom C++ 11.0
Uznalem to za ewidentny blad. 
Mianowicie:

int getb();		// to jest funkcja pobierajaca bajt z kolejki

void funckja()
{
  .
  .
  .
  int c=getb() + (getb()<<8) + (getb()<<16) + (getb()<<24);
  .
  .
  .
}

Funkcja getb() pobiera bajty z kolejki, wiec wywolan nie mozna sobie
zamieniac miejscami. A kompilator linijke we funckji "funkcja()" tlumaczy
tak jakby byla zapisana nastepujaco:

int c=(getb()<<8) + getb() + (getb()<<16) + (getb()<<24);

Jeden kumpel powiedzial mi, ze standard nie definiuje kolejnosci wykonywania
wyrazen, wiec nalezy programowac tak, zeby sie zabezpieczac przed takimi
niespodziankami. Wydaje mi sie to straszna glupota, bo wykonywanie wyrazen
od lewej do prawej jest intuicyjne, logiczne i eleganckie.

Wiec jak to jest ? Kompilator ma buga, czy standard choro wymyslony ?

I co, z konstrukcjami typu: if(a==NULL || *a=0), ktorych uzywam nagminnie i
jak do tej pory zawsze dzialaly ?

    +--\ /--\ +--\ +--\ /--\ |  |             Arkadiusz Dabrowski
    |  | |  | |--< |--/ |  | |  |             dobrov@priv.onet.pl
    +--/ \--/ +--/ |  \ \--/  \/     stare konto:
                                     dobrov@zeus.polsl.gliwice.pl
Technical Details
Message-ID: <34d4667f.42236@news.icm.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!not-for-mail
From: dobrov@friko.onet.pl (Arkadiusz Dabrowski)
Newsgroups: pl.comp.lang.c
Subject: Watcom: blad kompilatora, czy glupi standard ?
Date: Sun, 01 Feb 1998 12:29:44 GMT
Organization: ICM's news server
Lines: 37
Message-ID: <34d4667f.42236@news.icm.edu.pl>
NNTP-Posting-Host: rap-wct418.katowice.tpnet.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit