gcc (GCC) 4.6.3
c89
I am trying to use usleep
. However, I keep getting the following warning:
implicit declaration of function usleep
I have included the unistd.h
header file.
The man pages mentions something about this. But I am not sure I understand by it:
usleep():
Since glibc 2.12:
_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
Before glibc 2.12:
_BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
But not sure what I a to do with the above?
That list is the pre-conditions for having usleep
defined. It's basically a C-like expression involving #define
variables which has to be true before including the header file.
The header file itself will only define usleep
inside what is usually a massive nest of #ifdef
statements and the developers have taken the time to tell you what you need to do so that you don't have to spend hours trying to figure it out yourself :-)
Assuming you're using a glibc
2.12 or better, it means you either have to:
Probably the easiest fix is to simply compile with gcc -D _BSD_SOURCE
or put:
#define _BSD_SOURCE
in the code before you include the header file that gives you usleep
.
You'll probably want to define these before any includes in case there are dependencies between the various header files.