我有一个类包含:
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
在我在构造函数和析构函数中设置成员的两个地方SomeClass
以及在我实例化的所有地方SomeClass
(它被实例化为自动变量并且需要知道堆栈上更高的下一个实例在哪里)。
不幸的是,该错误在 MSDN 中没有有意义的文档,并且该错误的文档__declspec(thread)
也没有指出在任何情况下它都不起作用。我确实检查thread
了预处理器中未定义的内容。