【发布时间】:2015-03-24 09:14:13
【问题描述】:
我对以下宏预处理器定义感到困惑:
#define HOOK_SYSCALL(NAME) original_##NAME = get_sys_call_table_addr()[__NR_##NAME];
get_sys_call_table_addr()函数的代码如下:
ssize_t *sys_call_table = (ssize_t *)NULL;
void** get_sys_call_table_addr(void)
{
void *swi_addr=(long *)0xffff0008;
unsigned long offset=0;
unsigned long *vector_swi_addr=0;
offset=((*(long *)swi_addr)&0xfff)+8;
vector_swi_addr=*(unsigned long *)(swi_addr+offset);
while(vector_swi_addr++)
{
if(((*(unsigned long *)vector_swi_addr)& 0xfffff000)==0xe28f8000)
{
offset=((*(unsigned long *)vector_swi_addr)& 0xfff)+8;
sys_call_table=(void *)vector_swi_addr+offset;
break;
}
}
return (void **) sys_call_table;
}
我想问一下这个具体行是否:
get_sys_call_table_addr()[__NR_##NAME];
将内联函数作为数组调用?就像我们对普通类型的数组所做的那样,例如数组[3];
谢谢!!
【问题讨论】:
-
“将
称为 ”是什么意思? -
@immibis 你什么意思?我真的不明白,对不起!
-
您说“它是否将函数调用为数组?”,但这与“它像鱼一样驾驶汽车吗?”一样有意义
标签: c c-preprocessor