Structur wird immer erstellt?

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

Da muss ich wohl eingestehen das ich wirklich einiges total verdreht habe,
bzw. nicht wirklich bescheid wusste.
Aber ihr habt mir wirklich weitergeholfen und ich denke das ich es gepeilt habe.
Deshalb auch vielen Dank an alle für die Hilfestellung. :allright:
Ich werd mich aber damit noch genauer beschäftigen um mehr Hintergrundwissen zu ergattern.
Kennt jemand evtl. noch ein gutes Buch oder so wo es genauer erklärt wird?
Ansonten nochmal big thx, ihr seit spitze! :D
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
Ligatur
Beiträge: 196
Registriert: 09.07.2006 00:41

Beitrag von Ligatur »

Kaeru Gaman hat geschrieben:
a14xerus hat geschrieben:Das hat auch nichts mit einer Initialisation (Init()) zu tun, da Structuren sowieso schon zur Compilezeit "umgewandelt" werden.
das genau ist der punkt. [...]
So ganz stimmt das ja eigendlich nicht. Strukturen sind eigendlich nur Bauanleitungen die erst mit der Definition einer Variablen zum Leben erweckt werden und somit nicht wirklich direkt in Code umgewandelt werden.
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

Ligatur hat geschrieben:
Kaeru Gaman hat geschrieben:
a14xerus hat geschrieben:Das hat auch nichts mit einer Initialisation (Init()) zu tun, da Structuren sowieso schon zur Compilezeit "umgewandelt" werden.
das genau ist der punkt. [...]
So ganz stimmt das ja eigentlich nicht. Strukturen sind eigentlich nur Bauanleitungen die erst mit der Definition einer Variablen zum Leben erweckt werden und somit nicht wirklich direkt in Code umgewandelt werden.
Strukturierte Variablen
oder
Variablen mit Struktur
oder sowas..
man kann ja auch kleinkariert sein :doh: :wink:
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

So ganz stimmt das ja eigendlich nicht. Strukturen sind eigendlich nur Bauanleitungen die erst mit der Definition einer Variablen zum Leben erweckt werden und somit nicht wirklich direkt in Code umgewandelt werden.

Mit Defined(bla, #PB_Structure) wird aber abgefragt, ob die STRUKTUR definiert wurde, und nicht ob eine Variable definiert wurde. Und die Struktur wurde definiert, d.h. der Compiler weiß darüber bescheid und gibt Dir ein "jawohl" zurück.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ist aber ebenso wie SizeOf() eine Compilerdirektive/funktion und keine Laufzeitfunktion,
wird also zur kompilezeit durch eine konstante ersetzt.

zur laufzeit wird kein wert zurückgegeben, sondern nur eine konstante interpretiert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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 »

Code: Alles auswählen

If Defined()
ist ja ziemlich sinnlos und verbraucht evtl. noch 4 Bytes,
Defined ergibt doch nur im Zusammenhang mit CompilerIF einen Sinn.
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
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag von a14xerus »

ts-soft hat geschrieben:

Code: Alles auswählen

If Defined()
ist ja ziemlich sinnlos und verbraucht evtl. noch 4 Bytes,
Defined ergibt doch nur im Zusammenhang mit CompilerIF einen Sinn.
Stimmt, bin ich noch gar nicht drauf gekommen, und ein Compilerif in einer Funktion, welches bezwecken soll, das etwas nur einmal gemacht wird ist schlichtweg unmöglich...
Somit ist allein das If defined() schon Schwachsinn, weil defined nur einmal vom Compiler durch eine konstante ersetzt wird, die procedure aber 2 mal aufgerufen wird /:->
Also alles einfach totaler Schwachsinn :wink:
Man definiert Strukturen einfach am Anfang des Codes und fertig <)
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

a14xerus hat geschrieben:
ts-soft hat geschrieben:

Code: Alles auswählen

If Defined()
ist ja ziemlich sinnlos und verbraucht evtl. noch 4 Bytes,
Defined ergibt doch nur im Zusammenhang mit CompilerIF einen Sinn.
Stimmt, bin ich noch gar nicht drauf gekommen, und ein Compilerif in einer Funktion, welches bezwecken soll, das etwas nur einmal gemacht wird ist schlichtweg unmöglich...
Somit ist allein das If defined() schon Schwachsinn, weil defined nur einmal vom Compiler durch eine konstante ersetzt wird, die procedure aber 2 mal aufgerufen wird /:->
Also alles einfach totaler Schwachsinn :wink:
Man definiert Strukturen einfach am Anfang des Codes und fertig <)
Und ich bin so froh das ich diese Frage gestellt habe,
denn nun weiß auch ich das. :roll:
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Gesperrt