我是編程新手,不理解此錯誤。C錯誤C2660:'菜單':函數不需要3個參數
我在Menu()函數中以及在menu_principal()函數中調用相同函數時具有相同的參數。 在函數menu_principal()中,我想通過函數Menu()和'option'變量來執行switch-case語句。
你能幫忙嗎?
int main()
{
void menu_principal();
return 0;
}
void menu_principal()
{
bool stop = true;
int option;
const char *title = "MENU PRINCIPAL";
const char *options_menu[] = { "ARTIGOS", "CLIENTES", "ORCAMENTOS", "SAIR" };
int n_options = 4;
do
{
option = Menu(title, options_menu, n_options);
switch (option)
{
case 1:
Menu_Item();
break;
case 2:
Menu_Client();
break;
case 3:
Menu_Billing();
break;
case 4:
stop = false;
break;
}
} while (stop);
}
int Menu(const char *title1, const char *options_menu1[], int n_options1)
{
int OptionSelected= 1;
int key;
bool stop = true;
do
{
system("cls");
gotoxy(5, 3 + OptionSelected); printf(">>");
gotoxy(15, 2); printf("%s", title1);
for (int i = 0; i < n_options1; i++)
{
gotoxy(10, 4 + i);
printf("%s ", options_menu1[i]);
}
do
{
key = _getch();
} while (key != KEY_UP && key != KEY_DOWN && key != KEY_ENTER);
switch (key)
{
case KEY_UP:
OptionSelected--;
if (OptionSelected < 1)
{
OptionSelected = n_options1;
}
break;
case KEY_DOWN:
OptionSelected--;
if (OptionSelected > n_options1)
{
OptionSelected = 1;
}
break;
case KEY_ENTER:
stop = false;
break;
}
} while (stop);
return OptionSelected;
}
如果你想調用'main'中的'menu_principal'函數,你不需要'void',只需'menu_prinipal();'。 – bejado
'void menu_principal();'只是告訴編譯器某處存在一個叫做'menu_principal'的函數,它不接受任何參數並且什麼都不返回。這個構造函數不會調用函數,所以,你的整個程序實際上什麼都不做。 – ForceBru
「菜單」功能的前向聲明可能有所幫助。我的意思是把這個'int Menu(const char * title1,const char * options_menu1 [],int n_options1);''main'上面'。不是主要的,但高於它。你能證實你已經做到了嗎? – smac89