如何在Windows CE上运行__declspec(thread)

时间:2011-02-08 09:02:26

标签: c++ visual-studio-2008 windows-ce visual-c++-2008

我有一个包含以下内容的课程:

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

1 个答案:

答案 0 :(得分:0)

我不相信Pocket PC(Windows CE)版本支持__declspec(thread)属性(TLS)。这可以解释为什么只有在你为Pocket PC编译而不是为Win32编译时才会出现这种情况。请参阅以下链接: