My compiler does not compile the following program I wrote. It gives an error at the lines I have marked stating that “Identifier not declared” even though I have declared it in my Main() function.
The program is incomplete, but it is going to take input about activity and output it.
#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();
}
You have declared
dbas a local variable inmain(); it cannot be seen by other functions.There are at least two solutions:
dba global (static) variable – i.e. move its declaration/definition out ofmain(). This is generally not recommended, as it’s usually poor practice to rely on global variables too much.dbinto functions that need it.