私は以下を含むクラスを持っています:
class SomeClass {
SomeClass *previous;
static __declspec(thread) SomeClass *stackTop;
public:
SomeClass() : previous(stackTop) { stackTop = this; }
~SomeClass() { stackTop = previous; }
};
__declspec(thread) SomeClass *SomeClass::stackTop = NULL;
これはWin32
ターゲットに対しては正常にコンパイルされますが、コンパイルがPocket PC 2003 (ARMV4)
エラー C2485 で失敗する場合:
error C2485: '$I' : unrecognized extended attribute
コンストラクターとデストラクタでメンバーを設定する 2 つの場所SomeClass
と、インスタンス化するすべての場所SomeClass
(自動変数としてインスタンス化され、スタックの上位にある次のインスタンスがどこにあるかを知る必要があります)。
残念ながら、MSDN にはこのエラーに関する意味のあるドキュメントはなく、ドキュメントにはエラーが__declspec(thread)
機能しない条件は示されていません。thread
プリプロセッサで定義されていないことを確認しました。