Warum ist Structure global?
Warum ist Structure global?
Warum ist Structure global?
Variablen, Maps, Listen usw. kann man entweder global, lokal oder innerhalb einer Procedure definieren. Aus welchen Grund ist es mit Structuren nicht möglich? Warum sind die immer global? Protectedete Strukturen wären auch sinnvoll oder?
Variablen, Maps, Listen usw. kann man entweder global, lokal oder innerhalb einer Procedure definieren. Aus welchen Grund ist es mit Structuren nicht möglich? Warum sind die immer global? Protectedete Strukturen wären auch sinnvoll oder?
Zuletzt geändert von Tommy am 27.01.2015 11:24, insgesamt 2-mal geändert.
PB 5.41 x64
Re: Warum ist Structure global?
Wäre eventuell sinnvoll für Includes, ja.
Allerdings muss die Struktur ja nur einmal definiert werden, von daher sind Namenszusätze nicht allzu schlimm.
Allerdings muss die Struktur ja nur einmal definiert werden, von daher sind Namenszusätze nicht allzu schlimm.
Code: Alles auswählen
Structure StructureThatHasAReallyLongNameToMakeItUnique_MyPoint
a.i
b.i
EndStructure
Procedure MyFunctionThatAlsoHasAPrefixToMakeItUnique_Do(a.i, b.i)
Protected myVar.StructureThatHasAReallyLongNameToMakeItUnique_MyPoint
myVar\a = a
myVar\b = b
EndProcedure
Signatur und so
Re: Warum ist Structure global?
Derren hat geschrieben:Wäre eventuell sinnvoll für Includes, ja.
Code: Alles auswählen
DeclareModule Derren
Structure MyPoint
a.i
b.i
EndStructure
Declare Do(a.i, b.i)
EndDeclareModule
Module Derren
Procedure Do(a.i, b.i)
Protected myVar.MyPoint
myVar\a = a
myVar\b = b
EndProcedure
EndModule
Derren::Do(1,2)
Define struct.Derren::MyPoint
struct\a = 5
struct\b = 6

cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: Warum ist Structure global?
Strukturen sind keine dynamischen Objekte wie Variablen, Listen usw.Tommy hat geschrieben:Warum ist Structure global?
Variablen, Maps, Listen usw. kann man entweder global, lokal oder innerhalb einer Procedure definieren. Aus welchen Grund ist es mit Structuren nicht möglich? Warum sind die immer global? Protectedete Strukturen wären auch sinnvoll oder?
In der EXE steht später keine Strukturen mehr, weil die Felder (also deren Offsets zum Zeiger) direkt in ASM eingebaut werden.
Damit du überscheidungen vermeiden kannst, weil deine Strukturnamen nicht besonders sind, kannst du die neuen Module nehmen, die dann einen lokalen Gültigkeitsbereich besitzen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Warum ist Structure global?
Danke, Danilo, hab ich mir schon fast gedacht, ich hinke wirklich hinterher. Alle angefangenen Projekte von mir sind noch 4.x
Signatur und so
Re: Warum ist Structure global?
Danke für eure Hilfe! Die Structure in eine Module zu packen ist eine gute Idee! Danke dafür!
STARGÅTE: Aso. Du sagst das die Felder mit deren Offsets zum zeiger direkt in asm eingebaut werden aber was passiert bei Modulen? Werden die Felder dupliziert je Module mit anderen Structurnamen und danach direkt in ASM eingebaut?
STARGÅTE: Aso. Du sagst das die Felder mit deren Offsets zum zeiger direkt in asm eingebaut werden aber was passiert bei Modulen? Werden die Felder dupliziert je Module mit anderen Structurnamen und danach direkt in ASM eingebaut?
Zuletzt geändert von Tommy am 27.01.2015 11:24, insgesamt 2-mal geändert.
PB 5.41 x64
- 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
Re: Warum ist Structure global?
Structuren sind lediglich CompilerAnweisungen, nach der Compilierung sind sie, genauso wie Prototypes oder Konstanten,
nicht mehr existent. Bei Modulen kennt der Compiler diese Anweisungen nur innerhalb des Modules und verwirft sie anschließend.
nicht mehr existent. Bei Modulen kennt der Compiler diese Anweisungen nur innerhalb des Modules und verwirft sie anschließend.
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Warum ist Structure global?
Ja gut. Aber Prozeduren sind auch nur Goto-Anweisungen. Und Variablennamen existieren auch nur als Pointer auf einen Speicherbereich, d.h. im ASM Code gibt es auch keine lokalen oder globalen Variablen mehr. Was der Compiler daraus macht ist mir eigentlich relativ wurscht.
Deswegen sollten diese Erklärungen auch nur als solche verstanden werden, und nicht als Argument gegen lokale Strukturen.
Deswegen sollten diese Erklärungen auch nur als solche verstanden werden, und nicht als Argument gegen lokale Strukturen.
Signatur und so
- 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
Re: Warum ist Structure global?
Variablen können Lokal, Global usw. sein, auch strukturierte, die Compileranweisungen nur eingeschränkt in Modulen.
Da Compileranweisungen nach der Compilierung nicht mehr existent sind, spielt das meist auch keine Rolle.
Besser so?
Da Compileranweisungen nach der Compilierung nicht mehr existent sind, spielt das meist auch keine Rolle.
Besser so?

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Warum ist Structure global?
Wenn dem so wäre, dann könnte man nicht rekursiv Funktionen aufrufen und dann gäbe es auch nicht in jeder Rekursion einen neuen Heap für die lokalen Variablen.Därrän hat geschrieben:Ja gut. Aber Prozeduren sind auch nur Goto-Anweisungen.