小小小小鸟 发表于 2024-2-2 09:48:56

【建议】将 无符号整数 的别名由DWORD改为unsigned int或者UINT

微软官方定义如下:
typedef unsigned long       DWORD;
typedef int               INT;
typedef unsigned int      UINT;





Xelloss0618 发表于 2024-2-2 10:04:40

没区别的,都是一样的东西

小小小小鸟 发表于 2024-2-2 10:22:02

Xelloss0618 发表于 2024-2-2 10:04
没区别的,都是一样的东西

不一样 用容器包装后类型不一样了

Xelloss0618 发表于 2024-2-2 10:31:38

小小小小鸟 发表于 2024-2-2 10:22
不一样 用容器包装后类型不一样了

对于 32 位以上的 VS 编译器来说,int 和 long 都是 4 字节长度。
这些基本类型,看长度和有没符号就行了,包装的类型无关紧要。

int 的长度一般由机器位数决定,比如 8 位机是 1字节;16 位 2 字节;32 位机 4 字节,64 位为了兼容,改为 4 字节。
而 long 的长度在不同位数里一般是 4 字节长度。

小小小小鸟 发表于 2024-2-2 10:52:03

Xelloss0618 发表于 2024-2-2 10:31
对于 32 位以上的 VS 编译器来说,int 和 long 都是 4 字节长度。
这些基本类型,看长度和有没符号就行了 ...

我没描述清楚···用外部库时,比如 很多库都会采用 vector<uint32_t> , 很少见到用 vector<DWORD>的(可能是我见得少?),然而这两个并不是一个数据类型,作为参数或返回值时 会提示无法将参数从“std::vector<DWORD,std::allocator<DWORD>>”转换为“std::vector<uint32_t,std::allocator<uint32_t>> 我在火山里写了个vector模板类,如果 模板实现类用 DWORD,就会遇到这种情况,除非强制转换,不然 我还得特意再封一个自己的 无符号整数 别名用 uint32_t来实现
页: [1]
查看完整版本: 【建议】将 无符号整数 的别名由DWORD改为unsigned int或者UINT