gpt4 book ai didi

c++ - 如何让 __declspec(thread) 在 Windows CE 上工作

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:46 24 4
gpt4 key购买 nike

我有一个类包含:

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 没有在预处理器中定义。

最佳答案

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

关于c++ - 如何让 __declspec(thread) 在 Windows CE 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com