我有一个无符号整数数组,需要存储指向数据和函数的指针以及一些数据。在我正在使用的设备中,sizeof 指针与 sizeof unsigned int 相同。如何将指向函数的指针转换为 unsigned int?我知道这使代码不可移植,但它是特定于微控制器的。我试过这个:
stackPtr[4] = reinterpret_cast<unsigned int>(task_ptr);
但它给了我一个错误“无效的类型转换”
将其转换为 void 指针,然后转换为 int 很麻烦。
stackPtr[4] = reinterpret_cast<unsigned int>(static_cast<void *> (task_ptr));
有干净的方法吗?
编辑 - task_ptr 是函数指针void task_ptr(void)
Love Barmar 的回答消除了我的便携性缺点。此外,void 指针数组实际上比无符号整数更有意义。谢谢 Barmar 和 isaach1000。
编辑 2:知道了,我的编译器正在考虑大内存模型,所以它使用的是 32 位指针,而不是我期望的 16 位指针(总内存为 17K 的小型微控制器)。