Tag: 类型转换操作符

C:如何访问存储在void指针中的函数指针(void *)?

混淆了如何访问存储在void指针中的函数指针(void *)。 假设你有这个: void *functions[] = { &sqrt, // int ft_sqrt(int nb); &power, &logN, &factorial; }; // An array of void pointers, each storing a function pointer. 如果我想访问sqrt函数,我的猜测如下: (int (*)(int)) functions[0](x) 但我的猜测是错误的: error: called object type ‘void *’ is not a function or function pointer 那么如何访问其中一个函数呢?

为什么-Wcast-align没有警告在x86上从char *转换为int *?

我知道gcc有一个选项-Wcast-align,它会在指针被抛出时发出警告,以便增加目标所需的对齐。 这是我的计划: char data[10]; int ptr = *((int *)data); 在我的机器上,数据的对齐要求是1,而ptr是8。 为什么我没有收到警告? 可能是因为我正在为x86编译吗?