2012-03-29 2 views
2

это код напоминание б-день с использованием linkedlistsКак исправить эту ошибку? предупреждение: неявная декларация функции 'main_menu'

typedef struct node 
{ 
    char name[61]; 
    int month;   int day; 
    int year; 
    struct node *next; 
}node; 

это список

typedef struct list 
{ 
    node *head; 
    node *tail; 
}list; 

это код создать список

list *create_list(list *plist) 
{ 
    plist->head = NULL; 
    plist->tail = NULL; 
    return plist; 
} 

это вставляет узел, созданный в список

list *insert_list(list *plist, node *pnode, node *new_node) 
{ 
    new_node->next = pnode->next; 
    pnode->next = new_node; 
    if (plist->tail == pnode) 
    { 
      plist->tail = new_node; 
    } 
} 

это меню добавить день рождения

void add_birthday(list *List) 
{ 
    char x; 
    node *data = (node *) malloc(sizeof(node)); 
    List = (list*) malloc(sizeof(list)); 
    printf("******************************************************************\n"); 
    printf("     ADD BIRTHDAY REMINDER FORM\n"); 
    printf("******************************************************************\n"); 
    List = insert_list(List, data, create_node(data)); 
    printf("Would you like to add another(y/n)?\n"); 
    scanf("%c", &x); 
    if (x=='y') 
    { 
      while (x=='y') 
      { 
        if (x=='y') 
        { 
          getchar(); 
          printf("******************************************************************\n"); 
          node *data = (node *) malloc(sizeof(node)); 
          List = insert_list(List, data, create_node(data)); 
          printf("Would you like to add another(y/n)?\n"); 
          scanf("%c", &x); 
        } 
      } 
    } 
    main_menu(List); //the problem lies here 
} 

это главное меню

void main_menu(list* List) 
{ 
    int x; 
    printf("Welcome to myCalendar version 1.0.0\n"); 
    printf("Please input the number that you wish to do:\n"); 
    printf("[1] Add Birthday Reminder\n"); 
    printf("[2] Delete Birthday Reminder\n"); 
    printf("[3] View Calendar\n"); 
    printf("[4] Quit\n"); 
    scanf("%d", &x); 
    getchar(); 
    switch (x) 
    { 
      case 1: 
        add_birthday(List); 
        break; 
      case 2: 
        delete_reminder(List); 
        break; 
      case 3: 
        view_calendar(List); 
        break; 
      case 4: 
        free(List); 
        break; 
     } 
} 

это главный

int main(void) 
{ 
    list* List = (list*) malloc(sizeof(list)); 
    List = create_list(List); 
    main_menu(List); 
    return 0; 
} 
+0

Таковы предупреждения test.c: 290: предупреждение: неявная декларация функции 'main_menu' test.c: На верхнем уровне: test.c: 357: предупреждение: конфликтующие типы для 'main_menu' test.c : 290: note: предыдущее неявное объявление 'main_menu' было здесь – user123456098

ответ

5

Является ли определение main_menu() после add_birthday()? Если да, то определите main_menu() до add_birthday(). Также определите все методы до main() или объявите их до main().

+0

Большое спасибо: D – user123456098

+1

Тогда примите ответ .. – Parag

+0

Ой, простите, что я здесь только новый – user123456098

1

Вы не включили * .h, содержащий main_menu () в * .c, содержащем main() или add_birthday(), или там, где указывает ошибку.

1

Вы объявили main_menu? При отсутствии объявления предполагается, что функция возвращает 'int'. Но, как вы определяете определение функции, оно возвращается недействительным. Это и есть причина всего путаницы.

Смежные вопросы