我有一个包含以下内容的课程:
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
。
答案 0 :(得分:0)
我不相信Pocket PC(Windows CE)版本支持__declspec(thread)
属性(TLS)。这可以解释为什么只有在你为Pocket PC编译而不是为Win32编译时才会出现这种情况。请参阅以下链接: