C 外部字符**环境的定义在哪里?

C 外部字符**环境的定义在哪里?,c,linux,C,Linux,我们可以在C中获得环境变量,如下所示: extern char **environ; int main(int argc, char *argv[]) { int count = 0; printf("\n"); while(environ[count] != NULL) { printf("[%s] :: ", environ[count]); count++; } return 0; } 但是环境的定义在哪里

我们可以在C中获得环境变量,如下所示:

extern char **environ;
int main(int argc, char *argv[])
{
    int count = 0;

    printf("\n");
    while(environ[count] != NULL)
   {
         printf("[%s] :: ", environ[count]);
         count++;
   }

   return 0;
}
但是环境的定义在哪里呢?我找不到一致的。它是如何工作的?

男人:

此变量必须在用户程序中声明,但如果头文件来自libc4或libc5,并且来自glibc且定义了_GNU_SOURCE,则在头文件unistd.h中声明


您是否尝试将envp声明为main的参数

int main (int argc, char *argv[], char *envp[])

环境
在Glibc源文件中定义为全局变量。

为什么头文件的不同源不适合在unistd.h中定义变量?你能说清楚吗?@nzomkxia:你通常不会在头文件中定义变量(
char**environ=NULL;
),因为头文件包含在多个翻译单元中——多个定义会冲突。您可以在头文件中声明变量(
extern char**environ;
),因为可以使用多个声明真的是从程序中访问变量的标准方法吗?没有什么我们可以
#包括
来获取声明的标准方法?