предупреждение: ISO C90 запрещает смешанные объявления и код [-Wdeclaration-after-Statement] - PullRequest
0 голосов
/ 25 мая 2018

У меня две проблемы, во-первых, предупреждение о времени компиляции: предупреждение: ISO C90 запрещает смешанные объявления и код [-Wdeclaration-after-Statement] MenuFunction fp;

, а во-вторых, я всегда заканчиваю "Ошибка:переполнение буфера. Пожалуйста, попробуйте еще раз, введите меньше данных "что я делаю неправильно, я понятия не имею, пожалуйста, помогите мне разобраться в этом.

typedef void (*MenuFunction)(System*);

int main(int argc, char ** argv)
{
    ...
    /* While loop for my menu */ 
    while(1)
    {
        printf("Main Menu\n");
        printf("%s\n", menu[0].text);
        printf("%s\n", menu[1].text);
        printf("%s\n", menu[2].text);
        printf("Select your option (1-3): ");

        MenuFunction fp; 
        fp = getMenuChoice(menu);
        if(fp == NULL){
          fprintf(stderr, "invalid choice\n");
        }
        else{
          (*fp)(&system);
        }
    }
}

/* Function that points to the menu function */
MenuFunction getMenuChoice(MenuItem * menu)
{
    MenuFunction function = NULL;
    char select[50];
    fgets(select, 50, stdin);
    if(select[strlen(select)-1] == '\n')
    {      
        switch(select[0])
        {
            case '1':
                function = menu[0].function;
                break;
            case '2':
                function = menu[1].function;
                break;
            case '3':    
                function = menu[2].function;
                exit(0);
                break;
            default:
                printf("Invalid option\n");
        }
    }
    else
    {
        readRestOfLine();
        printf("Error: buffer overflow. Please try again, entering less data");
    }
    return function;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...