Ankündigung

Einklappen
Keine Ankündigung bisher.

gibt es neben globalen und Makro-lokalen Variablen auch

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    gibt es neben globalen und Makro-lokalen Variablen auch

    "Makrokontext-lokale" Variablen?

    Ich habe ein Makro welches ich mehrmals verwende, dessen Code Variablen nutzt die sich alle Instanzen des Makros teilen. Aktuell muss ich hierfür globale Variablen nutzen, die ich aber nicht im Makro selbst deklarieren kann (da die globalen Namen natürlich eindeutig sein müssen, also muss ich außerhalb Makros Variablen deklarieren die ich ausschließlich im Makrocode verwenden möchte. Das wird mir a bisserl viel "Zugekleistere"...

    ich hab versucht mittels:

    Code:
    :begin TAS86T_LightControl(Area, ... )
    ...
    #ifndef mTAS86T_LightControl_Area_back
    #define mTAS86T_LightControl_Area_back
        mTAS86T_LightControl_Area_back = 0b01;
    #endif
    ...
    :end
    die Variable wenigstens INNERHALB des Makros eindeutig zu deklarieren, schmeckt aber dem compiler nicht...

    Gibt es einen "schönen" Vorschlag wie man das lösen kann?

    Danke
    Tab

    #2
    man kann Variablen lokal (also innerhalb des Makros) deklarieren, (eigentlich nicht "richtig", aber es funktioniert)

    Schau' dir am besten die mitgelieferten makros an, da siehst du, wie man das anwendet, hier im Forum hilft die Suche
    Im Handbuch findest du ebenfalls eine Erklärung...

    Grundlegende Syntax:
    :var Variablenname@


    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    Kommentar


      #3
      das war nicht meine Frage.
      ich weiß was Makro-lokale Variablen sind.
      ich hätte gerne Variablen die im globalen Kontext nicht sichtbar sind, sondern nur im Kontext eines Makros, NICHT in der Instanz eines Makros…

      Kommentar


        #4
        Es gibt keinen
        Zitat von TabSel Beitrag anzeigen
        Kontext eines Makros
        , sondern nur die
        Zitat von TabSel Beitrag anzeigen
        Instanz eines Makros
        im globalen Kontext.

        Das sauberste für sowas ist die Übergabe als Argument.

        Die "optische" Trennung hast du ja ohnehin durch die Strukturierung in "Programme".

        Kommentar


          #5
          Zitat von foobar0815 Beitrag anzeigen
          Es gibt keinen (Kontext eines Makros; TabSel), sondern nur die (Instanz eines Makros; TabSel) im globalen Kontext
          Während der Laufzeit (wobei es da technisch nicht mal lokale Instanzvariablen gibt...)
          Zur "Designtime" schon.
          Egal, Ich hab's jetzt auch schon umgeschrieben

          ganz grob: Ich hab ein Makro dass zwei MDT TAS86T-Tasten und Icons (links/rechts) einer Tastenreihe für die Licht- und Szenensteuerung eines Bereichs "benutzt". Jetzt hab ich ZWEI Taster, bei denen Tastenreihen den gleichen Bereich steuern. Ich hatte das Makro erst so geschrieben dass ich es ZWEI mal benutzte, für jeweils einen Taster. Diese zwei Instanzen hätten sich interne "BereichsInformationen" teilen sollen. Ich hab das jetzt so umgeschrieben dass ich nicht mehr IM Makro auf eventwrite(s) reagiere, sondern diese als Argument übergebe, womit ich dann "eventwrite(A) or eventwrite(B)" mitgeben kann. Damit hab ich nur noch EINE "Instanz" des Makros, die auf beide Taster reagiert, und GA schreibt, auf die widerum beide Taster reagieren...

          Das macht Spaß mit Makros *ggg*

          Kommentar

          Lädt...
          X