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;
}

**environ上記のコードのように、システム定義のポインターを で使用したいだけですA::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 に答える