|
发表于 2022-2-27 21:24:14
|
显示全部楼层
- $ cat main.c
- #include <stdio.h>
- void A(int x)
- {
- // 这是函数,参数是整数
- printf("这是函数 A,x值: %d\n", x);
- }
- void B(int y)
- {
- // 这是函数,参数是整数
- printf("这是函数 B,y值: %d\n", y);
- }
- void* p = A; // 指针 p 指向函数 A
- void* q = B; // 指针 q 指向函数 B
- typedef int* (*PTR_TO_FUN)(int); // 将指针重新取名,函数需符合一个整数参数
- int main()
- {
- PTR_TO_FUN Myfunc_A = p; // 赋值(值是指向函数 A 的指针)
- PTR_TO_FUN Myfunc_B = q; // 赋值(值是指向函数 B 的指针)
- if (*Myfunc_A(216)); // 调用函数 A
- if (*Myfunc_B(20)); // 调用函数 B
- return 0;
- }
- $ gcc -g -Wall -o main main.c
- $ mv main.c main.cpp
- $ g++ -g -Wall -o main main.cpp
- main.cpp:15:11: error: invalid conversion from ‘void (*)(int)’ to ‘void*’ [-fpermissive]
- 15 | void* p = A; // 指针 p 指向函数 A
- | ^
- | |
- | void (*)(int)
- main.cpp:16:11: error: invalid conversion from ‘void (*)(int)’ to ‘void*’ [-fpermissive]
- 16 | void* q = B; // 指针 q 指向函数 B
- | ^
- | |
- | void (*)(int)
- main.cpp: In function ‘int main()’:
- main.cpp:22:27: error: invalid conversion from ‘void*’ to ‘PTR_TO_FUN’ {aka ‘int* (*)(int)’} [-fpermissive]
- 22 | PTR_TO_FUN Myfunc_A = p; // 赋值(值是指向函数 A 的指针)
- | ^
- | |
- | void*
- main.cpp:23:27: error: invalid conversion from ‘void*’ to ‘PTR_TO_FUN’ {aka ‘int* (*)(int)’} [-fpermissive]
- 23 | PTR_TO_FUN Myfunc_B = q; // 赋值(值是指向函数 B 的指针)
- | ^
- | |
- | void*
- $
复制代码 |
|