返回值为函数指针的函数
2020年一段令我迷惑的代码
#include <stdio.h>
2
3 typedef char* (*CHARFUNC)();
4 static char c = 'c';
5
6 char* fun() {
7 return &c;
8 }
9
10 void* func() {
11 return fun;
12 }
13
14 int main() {
15 char* p = &c;
16 CHARFUNC charfunc = (CHARFUNC)func();
17 if (p == charfunc()) {
18 printf("two pointer equals\n");
19 }
20 else {
21 printf("not equal\n");
}
return 0;
}
这段代码在gcc中可以编译成功,但是在g++中不行。
WELCOME TO THE MACHINE