[英]Im try to make interrupts in my OS with macros. What does this construction mean in C?
#define IRQ_HANDLER(name) void name(); \
asm(#name ": pusha \n call _" #name " \n movb $0x20, %al \n outb %al, $0x20 \n outb %al, $0xA0 \n popa \n iret"); \
void _##name()
_##name()
是什么意思? 我知道#name
意思是"name"
,但是##name
什么?
#
是字符串化預處理程序運算符
##
是令牌粘貼或令牌串聯預處理器運算符。 擴展宏后, ##
兩側將合並並組成一個標識符。 這樣,在您的示例中, _
將連接到宏參數中給出的名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.