0

__thread 指定子を使用してスレッド ローカル変数を作成しようとしています。これは、次のコードで問題なく機能します。

#include <stdio.h>
#include <pthread.h>

static __thread int val;

int main()
{
  val = 10;
}

しかし、次のようにクラスで __thread 指定子を使用しようとすると:

#include <stdio.h>
#include <pthread.h>

class A
{
public:
  A();
  static __thread int val;
};

A::A()
{
  val = 10;
}

int main()
{
  A a;
}

コンパイラ エラー: undefined reference to 'A::val' が表示されます

4

3 に答える 3

3

静的変数のみを宣言しました。また、クラスの外で定義する必要があります (複数のソース ファイルがある場合は、1 つのソース ファイルでのみ):

int __thread A::val;
于 2012-09-07T15:15:28.600 に答える
0

静的変数は、クラス宣言のスコープ外で定義する必要があります。このような:

int A::val;
于 2012-09-07T15:17:26.323 に答える