Unschönes Makroverhalten

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Unschönes Makroverhalten

Beitrag von Batze »

Code: Alles auswählen

#Value =  5
#Wert  = -1

Macro Test(Var1, Var2, Value)
  Var1 = #Value
  Var2 = Value 
EndMacro


Wert = 10
Test(A, B, Wert)
Debug A
Debug B
Das #Value dann umgewandelt wird ist doch nicht sinn der Sache oder?
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Das Rautezeichen # wird in PureBasic in Makros dazu benutzt, Variablennamen zu verketten. PB versucht also, hier eine nicht vorhandenen Teil eines Variablennamens mit der Variable "Value" zu verknüpfen, was es ja auch ordnungsgemäß tut.
Da wirst du meines Erachtens nicht drumrum kommen, die Variablen und Kostanten konfliktfrei umzubenennen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

>Das #Value dann umgewandelt wird ist doch nicht sinn der Sache oder?
doch!

Genauso wie Structure davon beeinflusst werden:

Code: Alles auswählen

Structure Test
 x.l
 y.l
EndStructure

Macro Test(Value, x, y) 
  Value\x = x 
  Value\y = y 
EndMacro 


Wert.Test 
Test(Wert, 10, 20) 
Debug Wert\x
Debug Wert\y
Darum, den Parametern des Macros immer "einzigartige namen" geben!
also _Value oder _x_ oder so ...

Code: Alles auswählen

#Value =  5 
#Wert  = -1 

Macro Test(Var1, Var2, _Value) 
  Var1 = #Value 
  Var2 = _Value 
EndMacro 


Wert = 10 
Test(A, B, Wert) 
Debug A 
Debug B
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
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Naja, aber das verwenden der Raute als Verknüpfungszeichen hat ja an sich ja gerade den Vorteil dass man es sonst nicht irgendwo im Text verwenden kann. Wenn ich das was das Makro macht haben wollte würde ich ja

Code: Alles auswählen

Macro Test(Var1, Var2, Value)
  Var1 = ##Value
  Var2 = Value
EndMacro
schreiben.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

woher soll der Macro-Parsen das den wissen, was du da jetzt meinst. /:->

wenn du einen Konflikt erzeugst durch deine Benamsung, bist du halt selbst Schulz.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten