Compiler gibt Fehlermeldung "char * - (int)' unterscheidet sich in Ebenen der Dereferenzierung von 'int ()'", obwohl sich die zurückgegebenen Daten scheint die match-Funktion zurück geben

Bin nur zu lernen, C und dies ist mein erstes mal auf stackoverflow so bin mir nicht sicher, ob dies der richtige um diese Frage zu stellen, denn es scheint trivial im Vergleich zu den anderen hier Rum, aber ich fand dieses Stück code in einem text-Buch und als ich versucht habe zu kompilieren in Visual studio bekomme ich diese:

**error C2040: 'menutext' : 'char *(int)' differs in levels of indirection from 'int ()'**

Um ehrlich zu sein, habe ich mich an den code, und ich verstehe nicht, warum es der compiler beschwert sich. Ich brauche wirklich etwas Hilfe hier. Hier ist der code:

/*********************************************************/
/* */
/* MENU : program which prints out a menu */
/* */
/*********************************************************/
main ()
{ 
  int str_number;
  for (str_number = 0; str_number < 13; str_number++)
  {
    printf ("%s",menutext(str_number));
  }
}
/*********************************************************/
char *menutext(int n) /* return n-th string ptr */
{
  static char *t[] =
  {
    " -------------------------------------- \n",
    " | ++ MENU ++ |\n",
    " | ~~~~~~~~~~~~ |\n",
    " | (1) Edit Defaults |\n",
    " | (2) Print Charge Sheet |\n",
    " | (3) Print Log Sheet |\n",
    " | (4) Bill Calculator |\n",
    " | (q) Quit |\n",
    " | |\n",
    " | |\n",
    " | Please Enter Choice |\n",
    " | |\n",
    " -------------------------------------- \n"
  };
  return (t[n]);
}
  • Zusätzlich zu den anderen Kommentaren, alle string-literal Zeiger werden soll const, wie Sie zu ändern ist Undefiniertes Verhalten.
InformationsquelleAutor Steve S | 2010-12-11
Schreibe einen Kommentar