使按位函数适用于任何类型的整数输入c ++的最佳方法是什么?

Joh*_*nny 1 c++ performance void-pointers

所以我需要读取位中的标志并以位为单位设置标志.这些位有各种大小的整数:int16,int32,int64等.

我想有一个像这样的功能:

static integertype function(integertype data, char startbit, char endbit);
Run Code Online (Sandbox Code Playgroud)

我不想编码将在相同但相同的函数中为不同大小的整数隔离相同代码的代码(对于我想写的多个位函数).

我想过为数据使用void指针,所以一切都可以通过一个函数运行.这是一个糟糕的设计吗?效率怎么样?由于我的经验不足,我没有坏/好设计的概念.

static int function(void *data, char startbit, char endbit)
Run Code Online (Sandbox Code Playgroud)

必须经常查看这些标志,因为这是针对数据采集系统的.void指针实现是否合理有效?

我知道过早优化是不好的,但我想知道哪些东西通常比其他东西更少或更有效,所以我可以做出正确的决定.

提前谢谢你带我去学校.

GMa*_*ckG 7

通常,如果您需要通用功能,则使用模板:

template <typename T>
T function(T data, char startbit, char endbit);
Run Code Online (Sandbox Code Playgroud)

但请记住我们有std::bitset.


Tha*_*tos 5

为什么不把它作为模板化的功能呢?

template<typename T>
static T foobar(T data, char startbit, char endbit);
Run Code Online (Sandbox Code Playgroud)