gpt4 book ai didi

: static void (*var_name)(); 的 C 定义

转载 作者:行者123 更新时间:2023-11-30 18:59:17 25 4
gpt4 key购买 nike

我下载了一个用 C 编写的代码示例,但不理解其中的一条指令。除此之外,w当我尝试编译代码时,编译器在我不理解的行中抛出一个错误。

代码:

// Global vars
static int getting_text = 0;
static char *the_text; // Definition Part
static void (*text_entered)(); // Definition Part 2


// method
int add_text(unsigned char key)
{
char msg[] = "x";
int len;

if(!getting_text) return 0;
if(key==8) /* backspace */
{
len = strlen(the_text);
the_text[len-1] = '\0';
}
else if(key==13 || key==9) // cr or tab ends
{
getting_text = 0;
text_entered(the_text); // Execution Part
}
else
{
msg[0] = key;
strcat(the_text, msg);
}

glutPostRedisplay();

return 1;
}

编译器向我抛出一个错误,提示该方法的调用中参数过多。但如果它是 static void (*xxx)() 或其他方法,我不知道。

提前致谢。

最佳答案

编辑:以下内容仅适用于 C++。您是否使用 g++ 或其他 C++ 编译器而不是 C 编译器?

text_entered 是一个函数指针,指向一个不带任何参数的函数,因此会出现错误,因为您向它传递了一个字符指针。我认为它应该更改为,

static void (*text_entered)(char*);

这当然是假设 text_enterered 实际上被设置为一个采用 char* 参数的函数,并且它不仅仅是被调用错误。

关于: static void (*var_name)(); 的 C 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868193/

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