Erweitertes Macro (Parameter Verknüpung)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

Erweitertes Macro (Parameter Verknüpung)

Beitrag von Makke »

Hallo zusammen,

ich habe folgende Frage, warum funktioniert ein Macro wenn ich das konkret aufrufe aber z.B. nicht in einer For-Schleife. Hier ein Beispiel:

Code: Alles auswählen

Macro Test(Nb)
  Test#Nb
EndMacro

Test1 = 1
Test2 = 2
Test3 = 4

Debug Test(2)

For i = 1 To 3
  Debug Test(i)
Next
Ausgabe:

Code: Alles auswählen

[17:19:12] Warte auf den Start des Executable...
[17:19:12] Executable-Typ: Windows - x64  (64bit, Unicode, Purifier)
[17:19:12] Executable gestartet.
[17:19:12] [Debug] 2
[17:19:12] [Debug] 0
[17:19:12] [Debug] 0
[17:19:12] [Debug] 0
[17:19:12] Die Programmausführung ist abgeschlossen.
Wenn ich EnableExplicit einbaue kommt die Fehlermeldung: "Variable Testi existiert nicht". Ich bin mir nicht sicher aber wird nicht eigentlich immer von rechts nach Links (bzw. von Innen nach Außen) aufgelöst ? Also erst i umwandeln, dann Macro ausführen und dann Debug ?

Bin gerade ratlos.
---
Windows 11 (64 bit)
Benutzeravatar
mhs
Beiträge: 224
Registriert: 11.01.2009 16:30
Wohnort: Graben
Kontaktdaten:

Re: Erweitertes Macro (Parameter Verknüpung)

Beitrag von mhs »

Ein Makro wird vor der Kompilierung aufgelöst und nicht zur Laufzeit.

D.h. deine Variable "i" existiert zum Zeitpunkt der Kompilierung gar nicht. Aufgelöst sieht der Code wie folgt aus:

Code: Alles auswählen

Macro Test(Nb)
  Test#Nb
EndMacro

Test1 = 1
Test2 = 2
Test3 = 4

Debug Test2

For i = 1 To 3
  Debug Testi
Next
Du müsstest entweder das Makro umschreiben, stattdessen eine Funktion verwenden oder z.B. gleich mit Arrays arbeiten.
Michael Hack

Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

Re: Erweitertes Macro (Parameter Verknüpung)

Beitrag von Makke »

Zack, danke. Manchmal brauch man nur einen Denkanstoss. Klar, alle verwendeten Macros werden vor dem Kompilieren in den Code den sie darstellen ersetzt und dann wird kompiliert.

Danke schön.
---
Windows 11 (64 bit)
Antworten