implicit declaration of function usleep

c, usleep

Solution

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:

- declare _BSD_SOURCE; or

- declare a complicated combination of three other things, which I won't bother to decode.

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.

Problem

``` 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?

Original source

Related problems