C语言多级指针

起因

在更新.Net Runtime源码的时候,发现Mono最近修改的代码,看到指针还可以这样用.不过这个多级指针可读性真的不太好.

多级指针

if (sig->ret->type != MONO_TYPE_VOID) {
	if (info->ret_box_class) {
		if (sig->ret->byref) {
			return mono_value_box_checked(info->ret_box_class, *(gpointer*)retval, error);
		}
		else {
			return mono_value_box_checked(info->ret_box_class, retval, error);
		}
	}
	else {
		if (sig->ret->byref)
			return **(MonoObject***)retval; //多级指针
		else
			return *(MonoObject**)retval;  //多级指针
	}
}
else {
	return NULL;
}
秋风 2021-05-11