case wen_jian_1:hinstance_sy=LoadLibrary("F:\\project\\sy_dll\\Debug\\sy_dll.dll");
typedef int (* HANSHU)(char*,int);
HANSHU fun_2;
(*fun_2)(z,10);return 0 ;怎么会出现下面的错误提示?
f:\project\shiyan1\hellowin.c(75) : error C2143: syntax error : missing ';' before 'type'
f:\project\shiyan1\hellowin.c(76) : error C2065: 'HANSHU' : undeclared identifier
f:\project\shiyan1\hellowin.c(76) : error C2146: syntax error : missing ';' before identifier 'fun_2'
f:\project\shiyan1\hellowin.c(76) : error C2065: 'fun_2' : undeclared identifier

解决方案 »

  1.   

    1.case语句中不能进行声明或定义,你可以将之放在外面。
    2.fun_2本身就是一个指针,在下面调用的时候为何使用*解除引用,函数名本身即可当指针看待
    3.fun_2没有初始化,不能调用未经初始化的指针
      

  2.   


    我明白了
    是因为 case语句中不能进行声明或定义,
    我把它放外面就好了。我用的VC60
    为什么有时候把 typedef int (* HANSHU)(char*,int); 
    放到case语句中又可以通过编译呢?比如下面的代码 是我自己一个DLL中的代码
    case IDC_BUTTON1:hinstance_sy=LoadLibrary("F:\\project\\sy_dll\\Debug\\sy_dll.dll");
    typedef int (*fun_type_2)(char*,int);
    fun_type_2 fun_3,fun_4;
    fun_3=(fun_type_2)GetProcAddress(hinstance_sy,"fun_1");
    fun_4=(fun_type_2)GetProcAddress(hinstance_sy,"fun_2");
      

  3.   

    typedef int (* HANSHU)(char*,int); 
    是声明的类型。而在CASE中不能声明主要指不能声明变量或者函数指针
      

  4.   


    那 fun_type_2 fun_3,fun_4; 这句应该算是声明函数指针吧?
    却也可以通过编译。但是刚刚那个问题又确实是把
    typedef int (* HANSHU)(char*,int); 
    HANSHU fun_2; 
    这2句放到case外面就通过编译了。