我下载了用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;
}
编译器抛出一个错误,指出方法调用中有太多参数。但我不知道如果它是静态void(* xxx)()或其他东西的方法。
提前致谢。
答案 0 :(得分:2)
编辑:以下仅适用于C ++。您是否使用g ++或其他C ++编译器而不是C编译器?
text_entered是一个函数指针,指向不带任何参数的函数,因此是错误,因为你传递了一个字符指针。我认为它应该改为,
static void (*text_entered)(char*);
这当然是假设text_enterered实际上被设置为一个带有char *参数的函数,并且它不仅被调用错误。