Как правильно объявить функцию?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как правильно объявить функцию? - 2008-05-31 18:01:42.390000
|
|
|
quare
Сообщений: 7
Оценки: 0
Присоединился: 2008-05-28 21:45:24.353333
|
Имею вот такой код: void mainmenu()
{
cls(status);
cout<<"1. Open database."<<endl;
cout<<"2. Exit."<<endl;
cout<<endl;
cout<<"9. Program info"<<endl;
menu = getch();
switch (menu)
{
case '1':
{
readdb();
break;
}
case '2':
{
exit(1);
break;
}
case '9':
{
cls(status);
[b] info();[/b]
}
default:
{
cls(status);
mainmenu();
}
}
}
void info()
{
cout<<"Program was created by quare";
getch();
mainmenu();
} Ошибка 216`info' undeclared (first use this function) Как можно исправить? Может сделать опережающее объявление? Рыскал на эту тему, но так и не нашел =)
|
|
|
RE: Как правильно объявить функцию? - 2008-05-31 18:39:47.633333
|
|
|
NightmareZz
Сообщений: 1087
Оценки: 0
Присоединился: 2006-10-15 11:16:16.833333
|
Функция должна быть объялена до её использования. Хакеры, блин……. рыдаю :D:D:D:D:D
|
|
|
RE: Как правильно объявить функцию? - 2008-05-31 19:25:39.700000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: quare Имею вот такой код: […] Как можно исправить? Может сделать опережающее объявление? Рыскал на эту тему, но так и не нашел =) Можно сделать опережающее. Но твой код – бред. У тебя рекурсивный вызов функции mainmenu. Даже два. Один прямой, другой косвенно через info. Оно может и будет работать в большинстве ситуаций, но ровно до тех пор, пока кто-нибудь не начнёт раз за разом нажимать на всякие клавиши клавиатуры отличные от 1 и 2. В ряде функциональных языков программирования такая рекурсия нормальна, но там компиляторы умные. В C++ же компилятор с таким не справится. Используй цикл в mainmenu. Убей рекурсию.
|
|
|
RE: Как правильно объявить функцию? - 2008-05-31 20:03:22.286666
|
|
|
vvviperrr
Сообщений: 301
Оценки: 0
Присоединился: 2007-03-20 21:33:16.790000
|
ахаха)) rgo жестко откоментил))) звучит как убей рекурсию, спаси планету))) пс. сорри за оффтоп, не удержался, да и по теме все сказали уже)
|
|
|
RE: Как правильно объявить функцию? - 2008-05-31 23:27:49.210000
|
|
|
quare
Сообщений: 7
Оценки: 0
Присоединился: 2008-05-28 21:45:24.353333
|
Вроде переделал, пока что работет =) Но все-таки, как в С++ сделать опережающее объявление? В дельфях было forward, а тут что-нить подобное есть? =)
|
|
|
RE: Как правильно объявить функцию? - 2008-06-01 00:50:52.930000
|
|
|
NightmareZz
Сообщений: 1087
Оценки: 0
Присоединился: 2006-10-15 11:16:16.833333
|
Просто пишешь void info();
|
|
|
RE: Как правильно объявить функцию? - 2008-06-01 12:06:27.166666
|
|
|
Absurd
Сообщений: 335
Оценки: 0
Присоединился: 2007-08-24 13:14:11.566666
|
quote:
ORIGINAL: quare Вроде переделал, пока что работет =) Но все-таки, как в С++ сделать опережающее объявление? В дельфях было forward, а тут что-нить подобное есть? =) static void info(); - внутренняя линковка. Ставится в начале .с/.cpp файла после инклюдов. extern void info(); - внешняя линковка. Ставится обычно в .h файле, после этого функция становится доступной всему проекту. Чего-то влом писать чем они отличаются, ищи сам.
|
|
|
|
|