我尝试了以下代码:
。
int TestMethod(int a, int b)
{
printf("In TestMethod %d, %d \r\n", a, b);
return 0;
}
int main(void)
{
void (*ap_cb_function)() = (void(*)())TestMethod;
ap_cb_function();
return 0;
}
使用gcc编译器可以很好地运行。这会输出a和b的随机值。它是如何工作的?我原本期望在该行出现错误:
void (*ap_cb_function)() = (void(*)())TestMethod;
int* p
并写入*p = 1;
,行为也会是一样未定义的。 - WhozCraig