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

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

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

Beitrag 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?
Zuletzt geändert von Sebastian am 29.08.2007 20:53, insgesamt 1-mal geändert.
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Tatsächlich? Wieso das denn?
(Win 11 64-bit, PB 6.04 und 6.10)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Alles klar. Vielen Dank für die Antwort. Dann werde ich mich also weiterhin nicht die Deklaration bemühen.
(Win 11 64-bit, PB 6.04 und 6.10)
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag 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.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Naja und wenn man gar keinen Wert zurückgibt, passiert sowieso nichts... von daher ist das sowieso wurscht ;)
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten