我有一個包含一個類:如何獲得__declspec(線程)工作在Windows CE
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
未在預處理器中定義。
看起來像一個代碼生成限制。發佈到connect.microsoft.com以獲得官方「我們不支持這個」的故事。 – 2011-02-08 10:10:21