有没有一种优雅的方法,根据用户输入只决定一次

Is there an elegant way to decide only one time according to the user input?

本文关键字:输入 用户 一次 决定 方法 一种 有没有      更新时间:2023-10-16

最近,我试着写了一个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;