8

次のコードは正しく機能します。

file1.cpp

//global variable
int g_myvar1 = 5;

file2.cpp

int myfunc()
{
   extern int g_myvar1;
   g_myvar1++
}

file1.cpp が次の場合、file2.cpp を実行するにはどうすればよいですか。

file1.cpp

namespace myns
{
    //global variable
    int g_myvar1 = 5;
}

注1、以下はGCC 4.7で「修飾名の無効な使用」というコンパイルエラーを発生させます。「名前空間の使用」を試してみましたが、運もありませんでした。

int myfunc()
{
   extern int myns::g_myvar1;
   g_myvar1++
}

注2、以下は機能しますが、ローカル変数定義のみを探しています。

namespace myns
{
    //global variable
    extern int g_myvar1;
}
int myfunc()
{
   myns::g_myvar1++
}
4

2 に答える 2

5

使用using:

void f()
{ 
   using myns::g_myvar1;

   ++g_myvar1;
}

変数を (キーワードを使用して)ファイル内の名前空間で宣言し、それらをファイルで定義しました。また、変数を使用する場所にヘッダー ファイルをインクルードします。extern.hmyns.cpp

于 2013-01-14T12:27:18.297 に答える
2

宣言を含む名前空間をexternヘッダー ファイルに配置し、その変数を必要とするすべてのソース ファイルにそのヘッダー ファイルを含めます。

于 2013-01-14T12:27:25.817 に答える