递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2670|回复: 4
打印 上一主题 下一主题

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

[复制链接]

15

主题

156

帖子

1820

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1820
跳转到指定楼层
楼主
发表于 2024-2-2 09:48:56 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
微软官方定义如下:
typedef unsigned long       DWORD;
typedef int                 INT;
typedef unsigned int        UINT;





回复

使用道具 举报

15

主题

156

帖子

1820

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1820
5#
 楼主| 发表于 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来实现
回复

使用道具 举报

26

主题

1904

帖子

6939

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6939
地板
发表于 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 字节长度。
回复

使用道具 举报

15

主题

156

帖子

1820

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1820
板凳
 楼主| 发表于 2024-2-2 10:22:02 | 只看该作者
Xelloss0618 发表于 2024-2-2 10:04
没区别的,都是一样的东西

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

使用道具 举报

26

主题

1904

帖子

6939

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6939
沙发
发表于 2024-2-2 10:04:40 | 只看该作者
没区别的,都是一样的东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-27 07:22 , Processed in 0.086785 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表