#define MYPTR(n) ((n)==16?(USHORT*):(BYTE*))
我想做的是,如果n == 16,则MYPTR(n) pData;
应该等于USHORT* pData
。否则应为BYTE* pData
但是没有用。我真的不知道该怎么办。
答案 0 :(得分:1)
您可以使用模板来执行此操作,其方式比宏更安全且强大。
#include <type_traits>
#include <cstdint>
template<int N>
using myptr = std::conditional_t<N == 16, uint16_t*, uint8_t*>;
static_assert( std::is_same<myptr<16>, uint16_t*>::value );
static_assert( std::is_same<myptr<8>, uint8_t*>::value );