Thread View: pl.comp.lang.pascal
3 messages
3 total messages
Started by webmajsterek@poc
Tue, 12 Oct 2010 10:02
Wadliwy kod wynikowy
Author: webmajsterek@poc
Date: Tue, 12 Oct 2010 10:02
Date: Tue, 12 Oct 2010 10:02
67 lines
1540 bytes
1540 bytes
taki przykladowy program -- pokazuje �e fpc w z�ej kolejnosci wywoluje funkcje zawarte w wywo�aniu procedury . program error; {$APPTYPE CONSOLE} {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; {$R *.res} const tab:array[0..9]of byte =(0,1,2,3,4,5,6,7,8,9); var Count:Integer; Function ReturnByte:Byte; begin If Count>9 then Count:=0; Result:=Tab[Count]; Count:=Count+1; end; procedure WriteByte(S:String;a,b,c,d:Byte); begin WriteLn(S,a,' ',b,' ',c,' ',d); end; var a,b:Byte; begin Count:=0; WriteLn (' Orginal ',tab[0],' ',Tab[1],' ',Tab[2],' ',Tab[3]); WriteByte(' Bad Result ', ReturnByte,ReturnByte,ReturnByte,ReturnByte); WriteLn (' Orginal ',tab[4],' ',Tab[5],' ',Tab[6],' ',Tab[7]); a:= ReturnByte; WriteByte(' Bad Result ', a,ReturnByte,ReturnByte,ReturnByte); WriteLn (' Orginal ',tab[8],' ',Tab[9],' ',Tab[0],' ',Tab[1]); a:= ReturnByte; b:= ReturnByte; WriteByte(' Good Result ', a,b,ReturnByte,ReturnByte); Readln; end. na http://wiki.freepascal.org/Code_Conversion_Guide#Order_of_parameter_evaluation pisza ze "Delphi gwarantuje, �e wszystkie parametry s� obliczane od lewej do prawej. FPC nie zawiera takich gwarancji, a mo�e wywo�a� parametry w dowolnej kolejno�ci w celu wytworzenia optymalnego kodu." I tu problem bo w 99.99 % przypadk�w wywo�a� kolejno�� ma znaczenie . -- Wys�ano z serwisu OnetNiusy: http://niusy.onet.pl
Re: Wadliwy kod wynikowy
Author: =?iso-8859-2?Q?
Date: Tue, 12 Oct 2010 11:42
Date: Tue, 12 Oct 2010 11:42
29 lines
1085 bytes
1085 bytes
On Tue, 12 Oct 2010 10:02:12 +0200, webmajsterek@poczta.onet.pl wrote: > taki przykladowy program -- pokazuje �e fpc w z�ej kolejnosci wywoluje funkcje > zawarte w wywo�aniu procedury . Nie w "z�ej" tylko w "innej ni� Dephi", co jest zreszt� udokumentowane w linku kt�ry poda�e�: > na > http://wiki.freepascal.org/Code_Conversion_Guide#Order_of_parameter_evaluation > > pisza ze > "Delphi gwarantuje, �e wszystkie parametry s� obliczane od lewej do prawej. FPC > nie zawiera takich gwarancji, a mo�e wywo�a� parametry w dowolnej kolejno�ci w > celu wytworzenia optymalnego kodu." ...i nawet jest przedstawiony pow�d dla kt�rego kompilator mo�e chcie� reorder'n�� wywo�ania. > I tu problem bo w 99.99 % przypadk�w wywo�a� kolejno�� ma znaczenie . Nie, wbrew przeciwnie, w 99.(9)% przypadk�w poleganie na kolejno�ci wywo�a� ,podobnie jak w podanym przyk�adzie, to poleganie na side-effect wywo�ania, a to jest bezwzgl�dnie z�a praktyka. -- Pozdrawiam, �ukasz 'Maly' Ostrowski. http://l3v.pl/
Re: Wadliwy kod wynikowy
Author: "Wiktor S."
Date: Tue, 12 Oct 2010 12:54
Date: Tue, 12 Oct 2010 12:54
15 lines
453 bytes
453 bytes
> taki przykladowy program -- pokazuje �e fpc w z�ej kolejnosci > wywoluje funkcje zawarte w wywo�aniu procedury . Jak to z�ej? Dokumentacja m�wi, �e kolejno�� jest niezdefiniowana. Wi�c ka�da kombinacja jest r�wnie prawid�owa. > I tu problem bo w 99.99 % przypadk�w wywo�a� kolejno�� ma znaczenie . U�ywaj�c FPC jeste� zmuszony tak pisa� kod, aby to znaczenie mia�o dok�adnie w 0,00%. -- Azarien
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