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