curl_getenv()写这个函数的原因

时间:2012-08-06 15:05:26

标签: c++ c libcurl

我正在阅读libcurl,我遇到了一个不清楚的事情。 有一个函数curl_getenv()。 据说这是为了成为stdlib.h函数genenv()的包装而完成的(full description of this function

但我无法得到,为什么?  在支持C语言的所有平台上/所有平台上都支持C语言的标准功能。

那么,编写一个具有相同参数但不简化工作的包装器的原因是什么?这不是没用的吗?

2 个答案:

答案 0 :(得分:4)

curl_getenv函数与来自c lib的getenv不同,你可以从代码中看到它,我认为很清楚 - ):

static
char *GetEnv(const char *variable)
{
#ifdef _WIN32_WCE
  return NULL;
#else
#ifdef WIN32
  char env[MAX_PATH]; /* MAX_PATH is from windef.h */
  char *temp = getenv(variable);
  env[0] = '\0';
  if(temp != NULL)
    ExpandEnvironmentStringsA(temp, env, sizeof(env));
  return (env[0] != '\0')?strdup(env):NULL;
#else
  char *env = getenv(variable);
#ifdef __VMS
  if(env && strcmp("HOME",variable) == 0)
    env = decc_translate_vms(env);
#endif
  return (env && env[0])?strdup(env):NULL;
#endif
#endif
}

char *curl_getenv(const char *v)
{
  return GetEnv(v);
}

答案 1 :(得分:1)

如果每个平台的环境变量名称或它们所包含的字符串略有不同,该怎么办?然后使用包装器可以隐藏差异。