#ifdef HAVE_UNISTD_H
#include<unistd.h>
#else
extern int getpid(void)
#endif /* HAVE_UNISTD_H */
Acho que a ideia é verificar se o arquivo de cabeçalho <unistd.h>
está disponível ou não. se não, então extern int getpid(void)
eu sei que é muito básico. Mas não encontrei bom resultado via internet. O que significa a macro HAVE_UNISTD_H?
Significa exatamente isso:
HAVE_UNISTD_H
deve ser definido seunistd.h
estiver disponível. Isso é definido, por exemplo, pelo Autoconf; veja suas definições de macro de cabeçalho .Isso pressupõe que alguma ferramenta externa verifique se
unistd.h
está disponível e atualize outro arquivo de cabeçalho (config.h
com Autoconf, normalmente) para armazenar esse fato. O próprio compilador C não define isso.