Seite 1 von 1

[gelöst] Prozeduren ohne Return - dennoch als Byte?

Verfasst: 29.08.2007 19:58
von Sebastian
Hallo!

Ich kann ja definieren von welchem Typ eine Prozedur ist. Das erscheint sinnvoll, denn ich kann ja einen String oder eine Zahl zurückgeben. Soviel ist mir klar. Ich benutze jedoch viele Prozeduren nicht als Funktion, sondern schlicht, um den Code sauber zu halten. Ich habe sie nicht definiert, also nicht als byte oder long oder string oder was auch immer. Die Frage nun aber ist, werden sie dann automatisch als long definiert, verbrauchen also mehr speicher? Sollte ich also demnach alle Prozeduren, die nichts zurückgeben als byte deklarieren?

Verfasst: 29.08.2007 20:02
von ts-soft
Ja und Nein
Automatisch long ja, Byte ist blödsinnig auf einem 32-Bit System. Macht nur
Sinn in einer Struktur oder wenn man tatsächlich ein Byte benötigt. Spart
ansonsten keinen Speicher!!, macht nur langsamer.

Verfasst: 29.08.2007 20:04
von Sebastian
Tatsächlich? Wieso das denn?

Verfasst: 29.08.2007 20:06
von ts-soft
Weil die Speicherverwaltung darauf keine Rücksicht nimmt wenn ein byte
reserviert wird, lediglich in einer Structure, wo diese ja als ganzes reserviert
wird, macht es sinn. Der Pointer den PB intern verwalten muß, der ist auch
immer Long.

Verfasst: 29.08.2007 20:07
von Sebastian
Alles klar. Vielen Dank für die Antwort. Dann werde ich mich also weiterhin nicht die Deklaration bemühen.

Verfasst: 29.08.2007 20:17
von freak
Der Rückgabewert geht über das EAX Register (bei Integer werten), und das hat 32bit, egal ob
man ein Byte, Word oder Long reinsteckt.

Auch bei Parametern wird automatisch auf Long gecastet, damit der
Stack an einer 4byte-Grenze ausgerichtet bleibt.

Verfasst: 29.08.2007 23:50
von ZeHa
Naja und wenn man gar keinen Wert zurückgibt, passiert sowieso nichts... von daher ist das sowieso wurscht ;)

Verfasst: 30.08.2007 00:16
von ts-soft
ZeHa hat geschrieben:Naja und wenn man gar keinen Wert zurückgibt, passiert sowieso nichts... von daher ist das sowieso wurscht ;)
Doch, dann gibt PureBasic automatisch Null oder "" zurück!
Garnichts wäre ein zufälliger Wert, das passiert im gegensatz zu einigen
anderen Sprachen nicht.