Macro Variable auch als String nutzbar?

Anfängerfragen zum Programmieren mit PureBasic.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Macro Variable auch als String nutzbar?

Beitrag von Nino »

Sicro hat geschrieben:Für mich ist es ebenfalls kein Bug.
Es ist wirklich kein Bug, und Du hast den Grund ganz richtig erklärt.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Macro Variable auch als String nutzbar?

Beitrag von Nino »

NicTheQuick hat geschrieben:Es mag vielleicht kein Bug sein, aber es ist wieder komplett anders wie es jede mir bekannte andere Programmiersprache macht, in denen Scopes richtig funktionieren. :wink:
Das Verhalten von PB ist hier logisch und einfach zu verstehen. Ich sehe kein Problem.
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: Macro Variable auch als String nutzbar?

Beitrag von Mijikai »

Nino hat geschrieben: Das Verhalten von PB ist hier logisch und einfach zu verstehen. Ich sehe kein Problem.
Logisch ist es nicht.
Wenn es so wäre und wie erwartet funktionieren würde gäbe es auch keine Diskussion.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Macro Variable auch als String nutzbar?

Beitrag von Nino »

Mijikai hat geschrieben:Logisch ist es nicht.
Doch.
Mijikai hat geschrieben:Wenn es so wäre und wie erwartet funktionieren würde gäbe es auch keine Diskussion.
Diese Schlussfolgerung ist nicht logisch.
"Wie erwartet funktionieren" ist etwas anderes als "logisch", und diese Diskussion hier gibt es unter anderem auch deshalb, weil einige anscheinend nicht verstanden haben wie unter PB Makros und/oder Module funktionieren.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Macro Variable auch als String nutzbar?

Beitrag von GPI »

Das verhalten ist absolut logisch, weil es sonst massive Probleme mit den Scope geben würde.

Code: Alles auswählen

DeclareModule test
  aloha=20
  Macro test2(_value_)
    aloha = _value_
  EndMacro
EndDeclareModule
module test
endmodule

value=10
aloha=30
test::test2(value) ;Macro - welches Aloha? Das in "root"-Scope oder das in Module test

ein Macro sind "Scope"-Los. Sie werden ausgeführt, bevor alles andere gemacht wird. Quasi ein Pre-Compiler wenn man so will.
Ansonsten hast du das Problem oben: Es gibt zwei Alohas - einmap in Module test und einmal außerhalb - welches ist gültig?
wenn das aus den Scope Test gültig ist, da gibt es kein Value (setzen wir ja ein).
Oder sollte vor den Macro quasi ein "UseModule Test" ausgeführt werden? Dann gibts eine Compilerfehlermeldung sobald das Macro benutzt wird, da es in Root und in Test ein Aloha gibt und das darf auch nicht sein.

Das Verhalten ist absolut logisch aufgebaut. Man mag es vielleicht nicht erwarten, aber es ist logisch und nachvollziehbar.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten