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
usleepdefined. It’s basically a C-like expression involving#definevariables which has to be true before including the header file.The header file itself will only define
usleepinside what is usually a massive nest of#ifdefstatements 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
glibc2.12 or better, it means you either have to:Probably the easiest fix is to simply compile with
gcc -D _BSD_SOURCEor put: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.