以下是mysql的源码:
#if defined(HAVE_GETHOSTBYNAME_R)#if defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE)struct hostent *my_gethostbyname_r(const char *name,
   struct hostent *result, char *buffer,
   int buflen, int *h_errnop)
{
  struct hostent *hp;
  DBUG_ASSERT((size_t) buflen >= sizeof(*result));
  if (gethostbyname_r(name,result, buffer, (size_t) buflen, &hp, h_errnop))
    return 0;
  return hp;
}#elif defined(HAVE_GETHOSTBYNAME_R_RETURN_INT)struct hostent *my_gethostbyname_r(const char *name,
   struct hostent *result, char *buffer,
   int buflen, int *h_errnop)
{
  if (gethostbyname_r(name,result,(struct hostent_data *) buffer) == -1)
  {
    *h_errnop= errno;
    return 0;
  }
  return result;
}#else/* gethostbyname_r with similar interface as gethostbyname() */struct hostent *my_gethostbyname_r(const char *name,
   struct hostent *result, char *buffer,
   int buflen, int *h_errnop)
{
  struct hostent *hp;
  DBUG_ASSERT(buflen >= sizeof(struct hostent_data));
  hp= gethostbyname_r(name,result,(struct hostent_data *) buffer);
  *h_errnop= errno;
  return hp;
}
#endif /* GLIBC2_STYLE_GETHOSTBYNAME_R */
里面的gethostbyname_r 有两种类型,一种是3个参数的, 一种是5个参数的,可是我在linux下查了一下,只有5个参数的那形式,没有3个参数的形式。 这个是怎么回事啊?