原帖由 tyc611 于 2008-12-10 18:35 发表
我前面理解偏了,你要的Integer只存放一个4字节大小的整数?我开始以为你要一个存放4的整数倍大小的大数类
你的需求不需要类吧?只需要用条件编译为各个平台上的4字节整形类型定义一个类型别名Intger即右?
原帖由 tyc611 于 2008-12-10 19:04 发表
如果用类实现,你的to_4byteint()在不同的平台接口有所不同(返回类型)?这还得用条件编译
类内部实现还得用条件编译(根据不平编译器平台先用不同的底层类型)
我觉得没必须实现为类,用类型别名,再加一个 ...
原帖由 tyc611 于 2008-12-10 22:04 发表
在32位和64位平台上,一般int都是32位,在16位平台上用long
有些编译器还提供指定宽度的类型,比如VC里的__int32就肯定是32位
根据你支持的目标平台写就行了
原帖由 cling6394 于 2008-12-11 10:39 发表
没有特别好的办法,用条件编译的方法会导致程序难以理解和修改。可以考虑自动代码生成,这也是现在最流行的方法
可以这样:
写一个命令或者脚本,例如就叫mycmd,在32位系统下输出32,在64位系统下输出64, 1 ...
原帖由 cling6394 于 2008-12-10 17:58 发表
没有特别好的办法,用条件编译的方法会导致程序难以理解和修改。可以考虑自动代码生成,这也是现在最流行的方法
可以这样:
写一个命令或者脚本,例如就叫mycmd,在32位系统下输出32,在64位系统下输出64, 1 ...
原帖由 yulc 于 2008-12-11 11:01 发表
没太理解,为什么不这样呢?
class Int32
{
private:
char _data[4];
public:
构造,析构等等方法...
};
这样,我类的大小就肯定是 4字节,这_data用来存储就可以.
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |