#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#define RANGE(i, min, max) (i<min) || (i>max) ? 1: 0
int main (void )
{
int r;
do
{
do{
r=rand();
} while (RANGE(r, 1, 100));
printf("%d", r);
}
while (!kbhit());
return 0;
}
When I run this programme I find the following error:
conio.h: No such file or directory
If delete #include "conio.h"
then I find the following error:
Undefined symbols for architecture x86_64:
"_kbhit", referenced from:
_main in cckd1NC4.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
How can I solve this problem? What are reason behind these? Would you please tell me?
the double quotes in #include "something.h"
means the file something.h
is present in the current directory ie where the source file is located. Where as the <> symbols in #include <something.h>
means that something.h is present in the standarad library folder ie for example the /usr/include
folder.
conio.h is a part of the standarad library so you need to use the <> symbols instead of the double quotes.
The error you are seeing is because the linker is not able to find the function definition of kbhit()
to link with your code to make the binary/executable.