假设我有一个功能......
void * getValue(...);
有没有办法检查对getValue(...)的调用的返回类型?
我计划在程序中使用void *方法,例如getValue(),程序的进程将取决于getValue()的返回类型。
是否可以检查退货类型?
答案 0 :(得分:3)
您可能希望返回结构
enum valuetype {PCHAR, PSHORT, PINT, PLONG, PLLONG, PFLOAT, PDOUBLE, PLDOUBLE};
struct sometype {
enum valuetype vt;
void *value;
}
struct sometype getValue(...);
答案 1 :(得分:2)
我担心你无法确切地知道存储在(void *)指针中的内容。如果您需要我的建议,请更改您的代码并使用正确的类型指针
答案 2 :(得分:2)
否 - C不会使用其类型标记值,因此信息不可用。
可能的替代方法包括向函数添加out参数以指示类型,或者使用包含值和指示其类型的枚举的变量结构。