最近,我试着写了一个madule。在代码的许多部分,我需要根据用户输入做出决定。例如,我需要根据用户输入的 8 位或 16 位来选择我的缓冲区类型。我实现了这段代码,它完成了我的工作:
if (requestedbitsNumber == 8)
mxMalloc(sizeof(unsigned __int8)*NumberOfElements);
if (requestedbitsNumber == 16)
mxMalloc(sizeof(unsigned __int16)*NumberOfElements);
现在我想知道是否有一种优雅的方法来定义宏之类的东西,而其他人则根据用户输入仅决定一次?像这样:
if (requestedbitsNumber == 8)
#define dataType unsigned __int8
if (requestedbitsNumber == 16)
#define dataType unsigned __int16
并在需要的地方使用datType
。我知道#define
是预处理器指令,甚至在代码编译之前就使用了。我用它来表达我的意思。谢谢。
使用 template<class YourIntegerType>
.
所以你写这样的东西:
if (requestedbitsNumber == 8)
X<unsigned __int8>();
if (requestedbitsNumber == 16)
X<unsigned __int16>();
您可以将 X 实现为函数或类。
要投射指针,你可以在 X 中写一些东西:
pointerToInteger = (YourIntegerType *) myVoidPointer;