0
%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."
我可以定義沒有%%
前綴的字符串,但是如果該宏將被多次使用,則會重新定義相同的符號msg
會出現程序集錯誤。那麼如何避免該字符串的多個定義?定義變量導致同一個變量的多個定義
注意'節.text'將切換到'.text'節,即使這不是在宏被調用時處於活動狀態的節,也可能會破壞周圍的代碼。 – BeeOnRope