我无法解决下面这段代码。
当我用下面这段代码编译整个文件时,我看到一个警告(如下所示),我看不出是否从整个* .c文件中排除。
CODE:
int * ( * get_ptr1)(int) = (int* )0x234456;
printf("The address of the func_ptr is %x\n", get_ptr1);
警告讯息
Initialization from incompatible pointer type
有人可以解释一下我为什么会看到这个警告以及需要在上面的代码中纠正的内容。我使用的是C99标准编译器。
如果我的头衔与我的要求不一致,请耐心等待。
答案 0 :(得分:1)
int *
和int *(*)(int)
是不同的类型。你可以写:
int *(*get_ptr1)(int) = (int *(*)(int))0x234456;
printf
的函数指针没有格式说明符。您对%x
的使用会导致未定义的行为。 See this thread了解一些想法。