[Macro] Allocate/FreeStructure()

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

[Macro] Allocate/FreeStructure()

Beitrag von Bisonte »

Moin moin.

Wenn man sich bei PB5.30 erstmal an das AllocateStructure() und FreeStructure() gewöhnt hat,
und dann wieder in der LTS Version am arbeiten ist, vermisst man was.

Da ich mir das nicht abgewöhnen konnte und immer brav vom Compiler mit Fehlermeldungen
attackiert wurde, bastelte ich mir folgende Macros :

Code: Alles auswählen

Macro _AllocateStructure(Adress, StructureName)
  
  CompilerIf #PB_Compiler_Version >= 530
    Adress = AllocateStructure(StructureName)
  CompilerElse  
    Adress.StructureName = AllocateMemory(SizeOf(StructureName))
    If Adress
      InitializeStructure(Adress, StructureName)
    EndIf
  CompilerEndIf

EndMacro
Macro _FreeStructure(Adress, StructureName)
  
  CompilerIf #PB_Compiler_Version >= 530
    FreeStructure(Adress)
  CompilerElse
    If Adress
      ClearStructure(Adress, StructureName)
      FreeMemory(Adress)
    EndIf
  CompilerEndIf

EndMacro
Nun hab ich mir angewöhnt den Unterstrich vorneweg zu schreiben und der Compiler bleibt ruhig,
egal welche PB Version. (Man kann sich die Macros in eine Resident Datei packen und muss sie dann
nicht mehr inkludieren)
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

Warum machst du mit Unterstrich? Brauchst du doch nicht. Wenn AllocateStructure vorhanden is dann wird durch das echte AllocateStructure ersetzt wenn nicht dann wird AllocateMemory benutzt. Sonst musst du überall ein Unterstrich davor setzen == Mehr unnötiger Aufwand.
Aber danke den Code :allright:
Zuletzt geändert von CodeCommander am 18.01.2015 14:33, insgesamt 1-mal geändert.
~ DELETE ~
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35
Computerausstattung: armseliger Laptop, mit wenig RAM und noch weniger CPU-Leistung. ...und die Grafikkarte.... ....naja.. da male ich doch lieber selber.
Wohnort: nahe Wolfsburg

Re: [Macro] Allocate/FreeStructure()

Beitrag von SBond »

Ich denke mal, dass er damit seine Makros definiert.
Ich mache es bei mir zumindest so.

__Fkt() -> Makro (oder FKT() in c++)
_Fkt() -> eigene Prozedur
Fkt() -> PB-Funktion
Fkt_() -> API

...aber das ist wohl auch Geschmackssache.
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Antworten