我遇到了一个函数调用
// call the entry point from the ELF header
// note: does not return!
((void (*)(void)) (ELFHDR->e_entry & 0xFFFFFF))();
ELFHDR-> e_entry是一个函数指针。我认为((void (*)(void))
是返回类型。但我不确定类型void * void
是什么。
是否有规则告诉这种类型?
谢谢!
答案 0 :(得分:3)
void (*)(void)
是指向没有参数的函数的类型指针,它不返回任何值。
例如:
void foo(void)
{
}
void (*p)(void) = foo; // p is of type void (*)(void)
答案 1 :(得分:2)
你说“我认为((void (*)(void))
是返回类型” - 它不是。它正在施放表达式
(ELFHDR->e_entry & 0xFFFFFF)
是一个指向不带参数且不返回任何内容的函数的指针。
语句的最后一个()
通过该指针调用该函数。
答案 2 :(得分:1)
您想要的工具是cdecl,它将C类型转换为英语。在这种情况下,它翻译:
(void (*)(void))
成:
cast unknown_name into pointer to function (void) returning void