[英]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.