3

私はlibcurlを読んでいて、1つの不明なことに遭遇しました。関数 curl_getenv() が 1 つあります。stdlib.h の関数 Genenv() のラッパーになることを念頭に置いて作成されたと書かれています (この関数の完全な説明)

しかし、私は得ることができません、何のために?
C 言語の標準機能は、C 言語がサポートされているすべてのプラットフォームでサポートされています。

では、同じパラメーターを持ち、作業を簡素化しないラッパーを作成する理由は何ですか? 駄目じゃないですか?

4

2 に答える 2

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);
}
于 2012-08-06T15:36:11.467 に答える
1

環境変数の名前、またはそれらが保持する文字列がプラットフォームごとにわずかに異なる場合はどうなるでしょうか? 次に、ラッパーを使用すると、違いを隠すことができます。

于 2012-08-06T15:33:01.530 に答える