3
#include <iostream>

namespace A {
    void func();
}

void  A::func()
{
    extern char **environ;
    std::cout << environ[0] << std::endl;
}

int main()
{
     A::func();
     return 0;
}

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

undefined reference to `A::environ'

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

4

2 回答 2

1

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

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

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

然后简单地传递envp给你的函数。它将与全局一样工作。

于 2013-03-23T12:46:22.183 回答
1

添加

 #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;
}
于 2013-03-23T12:47:27.063 回答