-1

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

代码:

// 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)() 或其他东西的方法,我不知道。

提前致谢。

4

1 回答 1

2

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

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

static void (*text_entered)(char*);

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

于 2012-10-12T23:15:05.697 回答