在最上面加一句这样的定义 typedef void*(*pFn)(); pFn可以这样理解:首先pFn是一个指针,指针指向一个函数(或者说pFn是一个函数指针),此函数返回一个无类型的指针。最终定义的变量及函数都是指针罢了,不过是指针的类型不同。所以在编译时会有警告,说指针类型不匹配。但对于程序来讲,都是可以在特定的上下文中使用的。运行结果是 t1,t2交替出现。 其实void也可以换为其它的类型如int, double等 又想到一个很好的办法:这次编译不会有警告,运行也不会出错。示例代码如下所示 #include long t1(); long t2(); int main() { long(*fn)()= (long (*)()) t1 ; while(1){ fn = (long (*)()) fn(); } } long t1() { printf("t1\n"); return (long)t2 ; } long t2() { printf("t2\n"); return (long)t1 ; }
追问老哥,别复制鸭