У меня проблемы. Макросы MASM, похоже, не ведут себя как макросы C вообще. C имеет препроцессор, который обрабатывает текст как последовательность токенов, и вы можете поместить вызов макроса где угодно. Не так в MASM кажется. Я не могу найти подходящий документ для этого, но вы не можете вызвать макрос внутри директивы, не так ли? За исключением случаев, когда это часть пар в другом вызове макроса? Или когда он появляется внутри макроса def? Это единственные исключения? Где спецификация/документ?вызов макросов в MASM
Хорошо, что я пытаюсь сделать это:
external macro fnames:VARARG
extern stdin:qword,
for fname, <fnames>
fname&_ptr: qword,
endm
endm
external puts, fgets, printf, srand, rand
И я получаю: ошибку синтаксиса: для
Кажется, уже будет интерпретировать Экстерн директивы и находит для макроса внутри которого недопустимо => синтаксическая ошибка.
Что, черт возьми, я могу сделать? Вы можете разделить директиву на несколько строк, если вы заканчиваете каждую строку запятой, не так ли? Но если он не интерпретирует вызовы макросов, в этом нет никакой помощи.
я обнаружил, что я могу сделать:
external macro fnames:VARARG
extern stdin:qword
for fname, <fnames>
extern fname&_ptr: qword
endm
endm
external puts, fgets, printf, srand, rand
Но умножая директивы не всегда вариант. Возьмите директиву proc f.ex. Я не могу использовать заголовок proc для одного и того же proc несколько раз.
Есть ли разумное решение этой дилеммы? Можно ли использовать макросы MASM для создания одной строки вывода? Я не знаю, как это сделать. Брось на помощь, все, что ты придираешься! :) Cheerioh
Одна хорошая документация, которую я нашел, - [это из Randall Hyde] (http://www.oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/toc.html). См. Главу 8 для директив MASM. – zx485
Вы прочитали документацию? – fuz
Люди, которые голосуют за вопрос, просто ужасны. – pyetti