我有一個無符號整數數組,需要存儲指向數據和函數的指針以及一些數據。在我使用的設備中,sizeof指針與sizeof unsigned int相同。我如何將指針轉換爲無符號整型函數?我知道這使得代碼不可移植,但它是微控制器特定的。我嘗試這樣做:投射函數C++中的整數指針
stackPtr[4] = reinterpret_cast<unsigned int>(task_ptr);
,但它給我一個錯誤「無效的類型轉換」
澆鑄成空指針,然後以int是凌亂。
stackPtr[4] = reinterpret_cast<unsigned int>(static_cast<void *> (task_ptr));
有沒有乾淨的做法呢?
編輯 - task_ptr是函數指針void task_ptr(void)
愛Barmar的回答,把我的可移植性的缺點了。同樣,void指針的數組實際上更有意義,然後是Unsigned Ints。謝謝Barmar和isaach1000。編輯2:明白了,我的編譯器正在考慮大內存模型,所以它使用的是32位指針,而不是我期待的16位指針(帶有17K總內存的小型微型指針)。
你不能讓數組成爲void指針數組嗎? – isaach1000 2013-05-06 15:07:51
如何使用函數指針和數據指針的聯合? – Barmar 2013-05-06 15:09:45
只要(a)整數類型足夠大並且(b)它是一個指向普通(非成員或靜態成員)函數的指針,一個簡單的'reinterpret_cast'應該工作。這是這種情況嗎?什麼是'task_ptr'? – 2013-05-06 15:20:34