【问题标题】:curl_getenv() reasons of writing this functioncurl_getenv() 编写此函数的原因
【发布时间】:2012-08-06 15:05:25
【问题描述】:

我在阅读 libcurl 时遇到了一件不清楚的事情。 有一个函数 curl_getenv()。 上面写着它的想法是成为 stdlib.h (full description of this function) 中的函数 genenv() 的包装器

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

那么,为什么要编写一个具有相同参数并且不简化工作的包装器呢?不是没用吗?

【问题讨论】:

标签: c++ c libcurl


【解决方案1】:

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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      相关资源
      最近更新 更多