2012-03-29 7 views
2

これはlinkedlistsこのエラーを修正するにはどうすればよいですか?警告:関数の暗黙的な宣言 'MAIN_MENU'

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

を利用し、B-日リマインダーコードで、これはこれはリストのコードを作成

list *create_list(list *plist) 
{ 
    plist->head = NULL; 
    plist->tail = NULL; 
    return plist; 
} 
あるリスト

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

です

これは、作成したノードをリストに挿入します。

このは、これはメインメニュー

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である(ある追加の誕生日のメニュー

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 
} 

です)宣言をmain()またはadd_birthday()を含む* .cに置き換えます。

1

main_menuを宣言しましたか?宣言がない場合、関数は 'int'を返すとみなされます。しかし、関数の定義によれば、voidを返すことになります。これがすべての混乱の原因です。

関連する問題