具有以下代码:
文件:types.h
typedef struct Struct_A_T
{
int A;
char B;
float C;
}Struct_A;
文件:code.c
#include "types.h"
void Function(const void *const ptr)
{
Struct_A localStruct = *((Struct_A *)ptr);
localStruct.A = 1000;
localStruct.B = 250;
localStruct.C = 128.485;
}
文件:main.c
#include "types.h"
void Function(const void *const ptr);
int main(void)
{
Struct_A MyStruct1 = {2, 5, 2.8};
float local = 24.785;
/* Correct call */
Function(&MyStruct1);
/* Incorrect call!!! */
Function(&local);
}
并且知道指向 void 的指针可以用作“通用”指针。如何在“函数”内部检测到在 void 指针中传递的类型是正确的,以避免文件 main.c 中的最后一次调用引发的运行时错误?