@2018-10-24
结构体函数指针成员与函数指针类型的结构体类型形参的相互嵌套定义及使用问题
具体代码
1 #include <stdio.h> 2 3 #define METHOD 0 4 5 6 #if METHOD 7 8 typedef void(*pf)(struct _struct *parameter); 9 10 #else11 /* VC++6.0此法报错,gcc编译OK */12 struct _struct;13 typedef void(*pf)(struct _struct parameter);14 15 #endif16 17 18 struct _struct19 {20 int i;21 pf fun;22 };23 24 #if METHOD25 26 void testFun(struct _struct *parameter)27 {28 printf("这是一个函数指针与结构体定义的先后问题!\n");29 printf("testObj.i = %d\n", parameter->i);30 }31 32 #else33 34 void testFun(struct _struct parameter)35 {36 printf("这是一个函数指针与结构体定义的先后问题!\n");37 printf("testObj.i = %d\n", parameter.i);38 }39 40 #endif41 42 43 int main()44 {45 struct _struct testObj;46 47 testObj.i = 99;48 testObj.fun = testFun;49 50 #if METHOD51 testObj.fun(&testObj);52 #else53 testObj.fun(testObj);54 #endif55 }
联系客服