gpt4 book ai didi

c - 函数指针上的未知类型 F TYPE

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:50 27 4
gpt4 key购买 nike

#include<stdio.h>
#include<stdlib.h>

typedef void (*fn)(void) FNTYPE;
FNTYPE fn_arr[5];

void fun1(void){
printf("\n I'm func 1 \n");
}

void fun2(void){
printf("\n I'm func 2 \n");
}


fn_arr[0] = &fun1;
fn_arr[1] = &fun2;

int decidefunc(char* inp){
if(inp == NULL){
return 0;
}
else if(*inp == "a"){
return 1;
}
else if(*inp == "b"){
return 0;
}
else if(*inp == "c"){
return 1;
}
else{
return 0;
}
}

void callMyFunc(char* inp){
printf("\n %s \n",__func__);
int idx = decidefunc(inp);
fn_arr[idx]();
}

void do_lengthy_op(char* inp,void (*call)(char *inp)){
printf("\n do_lengthy_operation! \n");
call(inp);
}

int main(){
do_lengthy_op("b",callMyFunc);
return 0;
}

对于简单的 c 程序回调,我遇到了上述错误。找不到错误原因。

最佳答案

解决以下问题后它应该可以工作。

  1. 要定义一个 pointer-to-function 类型,您需要改用以下内容:

    typedef void (*FNTYPE)(void);
  2. 要正确比较char,你需要改变

    else if(*inp == "a"){
    return 1;
    }
    else if(*inp == "b"){
    return 0;
    }
    else if(*inp == "c"){
    return 1;
    }

    else if(*inp == 'a'){
    return 1;
    }
    else if(*inp == 'b'){
    return 0;
    }
    else if(*inp == 'c'){
    return 1;
    }
  3. 将以下内容移至 main() 中,因为您不能拥有 Code outside functions .

    fn_arr[0] = &fun1;
    fn_arr[1] = &fun2;

现场观看:http://ideone.com/vbandN .

关于c - 函数指针上的未知类型 F TYPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837771/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com