【发布时间】:2012-06-22 15:12:32
【问题描述】:
%macro printhello 0
section .rodata
%%msg: db "Hello, world.", 10, 0
section .text
push %%msg
call printf
add esp, 4
%endmacro
问题是每次宏出现在程序中时,NASM预处理器都会为标签msg创造一个新名称,并且同一字符串"Hello, world."会有多个定义我可以定义没有@的字符串987654324@ 前缀,但如果宏将被多次使用,我会因为重新定义相同的符号 msg 而得到一个汇编错误。那么如何避免该字符串的多个定义呢?
【问题讨论】: