Je suis en difficulté. Les macros MASM ne semblent pas du tout se comporter comme des macros C. C a un préprocesseur qui gère le texte comme une séquence de jetons, et vous pouvez mettre un appel de macro n'importe où. Pas tellement dans MASM semble-t-il. Je suis incapable de trouver un document approprié pour cela, mais vous ne pouvez pas invoquer une macro dans une directive, n'est-ce pas? Sauf quand il fait partie des pars dans un autre appel de macro? Ou quand il apparaît à l'intérieur d'une macro? Est-ce que ce sont les seules exceptions? Où est la spéc/doc?invoquant des macros dans MASM
OK, ce que je suis en train de faire est la suivante:
external macro fnames:VARARG
extern stdin:qword,
for fname, <fnames>
fname&_ptr: qword,
endm
endm
external puts, fgets, printf, srand, rand
Et je reçois: erreur de syntaxe: pour
Il semble déjà être l'interprétation de la directive extern et trouve la pour macro à l'intérieur qui n'est pas autorisé => erreur de syntaxe.
Que puis-je faire? Vous pouvez diviser une directive sur plusieurs lignes si vous terminez chaque ligne avec une virgule, n'est-ce pas? Mais s'il n'interprète pas les appels de macro, il n'y a pas d'aide.
J'ai découvert que je peux faire:
external macro fnames:VARARG
extern stdin:qword
for fname, <fnames>
extern fname&_ptr: qword
endm
endm
external puts, fgets, printf, srand, rand
Mais la multiplication de la directive n'est pas toujours une option. Prenez la directive proc f.ex. Je ne peux pas utiliser l'en-tête proc pour le même proc plusieurs fois.
Y a-t-il une solution intelligente à ce dilemme? Est-il possible d'utiliser des macros MASM pour produire une seule ligne de sortie? Je ne sais pas comment. Rush à la rescousse, tous les nerds là-bas! :) Cheerioh
Une bonne documentation que j'ai trouvée est [ceci de Randall Hyde] (http://www.oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/toc.html). Voir le chapitre 8 pour les directives MASM. – zx485
Avez-vous lu la documentation? – fuz
Les gens qui votent pour une question sont simplement horribles. – pyetti