c-如何获取出口库函数的地址并将其分配给全局变量



我想要获取出口库函数的地址,然后将该地址分配给一个全局变量。

  //test3.c
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4   int fp = &exit;
  5 
  6 int main(){
  7   printf("fp=%dn",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

当我获取出口地址并将其分配给main函数中的一个局部变量时,没有错误。

  //test4.c
  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 
  4 int main(){
  5   int fp = &exit;
  6   printf("fp=%dn",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

如何将出口地址分配给全局变量?

您应该用正确的类型声明fp(即指向接受int但不返回任何内容的函数的指针):

void (*fp)(int) = &exit;

不确定你想用printf做什么。如果要打印地址,请使用%p而不是%d

相关内容

  • 没有找到相关文章

最新更新