#define test(p) (typeof(*(*p)) *)
p
上面的宏在isvoid **
而不是其他东西时失败。
它适用于c,但不适用于c++。在 c++ 中是否有任何迂回的方法可以做到这一点?
#define test(p) (typeof(*(*p)) *)
p
上面的宏在isvoid **
而不是其他东西时失败。
它适用于c,但不适用于c++。在 c++ 中是否有任何迂回的方法可以做到这一点?
在 C++(11) 中有remove_pointer,它返回输入类型参数指向的类型。
基本上,当 p 为 int ** 时,我使用该宏进行 int * 类型转换。但是当 p 为 void **.[...] 时它会失败并出现错误。不,我不能使用 typeof(*p),因为这个宏还需要确保 p 是双指针。
如果您只需要演员表,那么一个简单的函数模板应该会有所帮助。
template<typename T>
T* remove_pointer_cast(T** p)
{
return (T*)(p);
}