[英]How to get a byte array in c/c++ from a function with unknown return type?
“字节数组”将是uint8_t*
或unsigned char*
。
如果你知道unknownType
的大小,我会创建一个
struct unknownType {
uint8_t stuff[123];
};
因此,您可以在更好地了解其字段时调整结构定义。
您可以定义一个 void 函数指针并为您拥有地址的每个函数使用该原型: 本示例中的返回值是一个随机结构,它可以是您想要的任何字节、整数、字符的整个数组-这对于每个调用的函数当然可能不同,只要函数签名是相同的(如果它们需要不同的输入,你总是可以在参数列表上添加一个空指针)
#include <stdio.h>
typedef struct _RANDSTRUCT
{
int Num ;
} RANDSTRUCT ;
typedef void * UNKNOWNFUNC (void) ;
UNKNOWNFUNC *myFunc() ;
int main()
{
void *retP ;
UNKNOWNFUNC *fnP ;
retP = myFunc () ;
printf ("Num %d (direct call)\n", ((RANDSTRUCT *)retP)->Num) ;
fnP = (void *)&myFunc ;
retP = fnP () ;
printf ("Num %d (fn addr call)\n", ((RANDSTRUCT *)retP)->Num) ;
return 0;
}
UNKNOWNFUNC *myFunc () {
static RANDSTRUCT randstruct[2] = {100, 200} ;
return ((void *)&randstruct[0]) ;
}
如何从返回类型未知的函数中获取 c/c++ 中的字节数组?
在 C++ 中调用函数的唯一方法是知道它的返回类型。 如果不知道返回类型,则无法调用该函数,因此无法获取该函数返回的对象。
多亏了 Botje 的回答,它才奏效
它可能看起来有效,但程序的行为是未定义的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.