我想获取退出库函数的地址,然后将此地址分配给全局变量。
//test3.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int fp = &exit;
5
6 int main(){
7 printf("fp=%d\n",fp);
8 return 0;
9 }
但是当我使用gcc编译上面的test3.c程序时出现了一个错误。
$ gcc -o test3 test3.c
test3.c:4:12: warning: initialization makes integer from pointer without a cast [enabled by default]
test3.c:4:3: error: initializer element is not computable at load time
当我得到并将exit的地址分配给main函数中的局部变量时,没有错误。
//test4.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(){
5 int fp = &exit;
6 printf("fp=%d\n",fp);
7 return 0;
8 }
我可以打印结果:
$ gcc -o test4 test4.c
test4.c: In function ‘main’:
test4.c:5:12: warning: initialization makes integer from pointer without a cast [enabled by default]
$ ./test4
fp=4195408
如何将退出地址分配给全局变量?
答案 0 :(得分:3)
您应该使用正确的类型声明fp
(即指向函数的指针int
并且不返回任何内容):
void (*fp)(int) = &exit;
然后不确定您要对printf
尝试做什么。如果您要打印地址,请使用%p
代替%d
。