Ich bin in Schwierigkeiten. MASM-Makros scheinen sich überhaupt nicht wie C-Makros zu verhalten. C hat einen Präprozessor, der den Text als eine Folge von Token behandelt, und Sie können einen Makroaufruf nur irgendwo platzieren. Nicht so in MASM scheint es. Ich kann dafür kein geeignetes Dokument finden, aber Sie können kein Makro innerhalb einer Direktive aufrufen, oder? Außer wenn es Teil der Pars in einem anderen Makro-Aufruf ist? Oder wenn es in einem Makro def auftaucht? Sind das die einzigen Ausnahmen? Wo ist die Spezifikation/Dokument?Aufruf von Makros in MASM
OK, was ich versuche, dies zu tun:
external macro fnames:VARARG
extern stdin:qword,
for fname, <fnames>
fname&_ptr: qword,
endm
endm
external puts, fgets, printf, srand, rand
Und ich bekomme: Fehler Syntax: für
Es scheint bereits die extern Richtlinie zu interpretieren und findet die für Makro innerhalb dessen ist nicht erlaubt => Syntaxfehler.
Was zum Teufel kann ich tun? Sie können eine Anweisung über mehrere Zeilen teilen, wenn Sie jede Zeile mit einem Komma beenden, richtig? Aber wenn Makroaufrufe nicht interpretiert werden, gibt es keine Hilfe.
ich entdeckte, dass ich tun kann:
external macro fnames:VARARG
extern stdin:qword
for fname, <fnames>
extern fname&_ptr: qword
endm
endm
external puts, fgets, printf, srand, rand
Aber die Richtlinie Multiplikation ist nicht immer eine Option. Nehmen Sie die proc-Anweisung f.ex. Ich kann den proc-Header für den gleichen proc mehrere Male nicht verwenden.
Gibt es eine kluge Lösung für dieses Dilemma? Ist es möglich, MASM-Makros zu verwenden, um eine einzige Ausgabezeile zu erzeugen? Ich weiß nicht wie. Rush zur Rettung, alle Nerds da draußen! :) Cheerioh
Eine gute Dokumentation, die ich fand, ist [diese von Randall Hyde] (http://www.oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/toc.html). Siehe Kapitel 8 für MASM-Anweisungen. – zx485
Haben Sie die Dokumentation gelesen? – fuz
Leute, die eine Frage abstimmen, sind einfach schrecklich. – pyetti