1
#define test(p) (typeof(*(*p)) *)
上述宏在p
爲void **
而不是其他內容時失敗。如何在運行時使用typeof創建void *指針
它在c中工作,但不在C++中。是否有任何圍繞C++做到這一點?
#define test(p) (typeof(*(*p)) *)
上述宏在p
爲void **
而不是其他內容時失敗。如何在運行時使用typeof創建void *指針
它在c中工作,但不在C++中。是否有任何圍繞C++做到這一點?
在C++(11)中有remove_pointer,它返回輸入類型參數指向的類型。
基本上,當p是int **時,我使用該宏來執行int *類型轉換。但是,當p無效時,它會失敗,錯誤** [...]不,我不能使用typeof(* p),因爲這個宏也需要確保p是一個雙指針。
如果演員陣容是你需要的一個簡單的功能模板應該有所幫助。
template<typename T>
T* remove_pointer_cast(T** p)
{
return (T*)(p);
}
我認爲你必須使用類似的dynamic_cast [檢查出來了網頁(http://www.cplusplus.com/doc/tutorial/typecasting/) – Pavenhimself
'typeof'「在運行時」?你究竟想在這裏測試什麼?只是爲了檢查,這是與GCC? –
基本上,當p是int **時,我使用該宏來執行int *類型轉換。但是當p無效時,它會失敗並報錯**。 –