如何在用户定义的命名空间的成员函数中引用指针 **environ?

How to refer to the pointer **environ in a user-defined namespace's member function?

本文关键字:引用 指针 函数 environ 成员 用户 定义 命名空间      更新时间:2023-10-16
#include <iostream>
namespace A {
    void func();
}
void  A::func()
{
    extern char **environ;
    std::cout << environ[0] << std::endl;
}
int main()
{
     A::func();
     return 0;
}

像上面的代码一样,我只想在 A::func() 中使用系统定义的指针**environ,但 g++ 总是说:

undefined reference to `A::environ'

如何正确使用系统定义的变量environ

添加

 #include <unistd.h>

环境必须在全球范围内。

所以代码看起来像这样:

#include <iostream>
#include <unistd.h>
extern char **environ;
namespace A {
void func();
}
void  A::func()
{
    std::cout << environ[0] << std::endl;
}
int main()
{
     A::func();
     return 0;
}

你只需要在全局范围内声明environ,当然这是定义它的地方,而不是在你的函数中。

如果你想更简洁一点,避免不必要地使用全局变量,你可以这样声明 main:

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

然后只需将envp传递给您的函数即可。 它将与全局相同。