__int128插入式替换类

时间:2018-03-22 01:16:03

标签: c++ gcc visual-c++

在将一些加密代码从GCC移植到MSVC时,我遇到了MSVC不支持__int128数据类型的旧问题。

因此,我决定为MSVC中的128位整数数据类型编写一个轻量级的 drop-in replacement 类,以避免尽可能多地更改原始GCC加密代码(它是大!)。

我已经重载/实现了所有算术运算符(除法和模数是一个婊子)以及原始GCC代码正在使用的所有其他运算符,除了"的一元"地址。运算符(&),因为 this article 声明:" 运算符的一元地址不应该重载。"

另外,我的sizeof()关键字有问题,因为原始的GCC代码经常在__int128大小的变量上使用sizeof()。

在MSVC C ++中编写此类用户定义数据类型有哪些良好的编码实践?

为什么"地址为"操作员永远不应该超载?

如何编写我的__int128类,以便当MyInt128属于__int128类型时,我可以依赖sizeof(MyInt128)==16,由我的插入式替换类实现?
避免虚拟功能和VFTP的存在,足够吗?填充和128位整数存储的内存对齐怎么办?

在尝试实现我自己的drop-in __int128用户定义数据类型时,其他陷阱是什么? ...投射?

P.S。 Bigint图书馆(GMP,Boost等)都采用不同的方式。

0 个答案:

没有答案