#include <iostream>
namespace A {
void func();
}
void A::func()
{
extern char **environ;
std::cout << environ[0] << std::endl;
}
int main()
{
A::func();
return 0;
}
与上面的代码一样,我只想在**environ
中使用系统定义的指针A::func()
,但g ++总是说:
undefined reference to `A::environ'
如何正确使用系统定义的变量environ
?
答案 0 :(得分:1)
您只需要在全局范围内声明environ
,这当然是在其定义的位置,而不是在您的函数中。
如果你想对它更清洁并避免不必要地使用全局变量,你可以用这种方式声明main:
int main(int argc, char* argv[], char* envp[])
然后只需将envp
传递给您的函数即可。它将与全球一样。
答案 1 :(得分: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;
}