我的编译器没有编译我编写的以下程序。它在我标记为“未声明标识符”的行中给出错误,即使我已在Main()函数中声明它。
程序不完整,但它会接受有关活动的输入并输出它。
#include <iostream.h>
#include <conio.h>
void addToLog();
void viewLog();
void what()
{
cout << "What would you like to do?" << endl
<< "1. View Today's Log" << endl
<< "2. Add to Today's Log" << endl
<< "__________________________" << endl << endl
<< "? -> ";
int in;
cin >> in;
if ( in == 1 )
{
viewLog();
}
if ( in == 2 )
{
addToLog();
}
}
void main()
{
clrscr();
struct database
{
char act[20];
int time;
};
database db[24];
what();
getch();
}
void addToLog()
{
int i=0;
while (db[i].time == 0) i++;
cout << endl
<< "_______________________________"
<< "Enter Activity Name: ";
cin >> db[i].act; // <-------------
cout << "Enter Amount of time: ";
cin >> db[i].time;
cout << "_______________________________";
what();
}
void viewLog()
{
int i=0;
cout << "_______________________________";
for (i = 0; i <= 24; i++)
{
cout << "1. " << db[i].act << " " << db[i].time << endl; // <-------
}
cout << "_______________________________";
what();
}
答案 0 :(得分:5)
您已将db
声明为main()
中的本地变量;其他功能无法看到它。
至少有两种解决方案:
db
成为一个全局(静态)变量 - 即将其声明/定义移出main()
。 通常不建议这样做,因为过分依赖全局变量通常是不好的做法。 db
的指针传递给需要它的函数。