免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12334 | 回复: 11
打印 上一主题 下一主题

[C] 使用stdint.h里的类型是好习惯吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-21 22:01 |只看该作者 |倒序浏览
项目里直接用intxx_t, uintxx_t,包括c/c++的项目。不然,大家又是用什么类型的?都是自己typedef吗?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
2 [报告]
发表于 2009-05-21 22:10 |只看该作者
我觉得很好 ……

但是平时只在x86上玩 ……  没见识过其他机器 ……
据说有char 为32bit的机器 ……  那么 int8_t 应该对应什么好呢 ……



还有一个比较麻烦的地方是msvc目前不支持 ……
如果它要支持C99或者C++0x就好办一些 ……

1. 等 ……

2. 使用mingw中提供的 stdint.h
有时候会有一些警告 ……

3. 网上有stdint for msvc的头文件
暂时没发现有什么警告
不过使用3条款的BSD协议……


楼主自己斟酌吧 ……

论坛徽章:
0
3 [报告]
发表于 2009-05-21 22:22 |只看该作者
这个出现 主要是为了可移植~~~
自己弄也可以~~~ 如果基本是在一个特定的平台,你不那样也可以~~~
当然,也可以是为了增加语义~~~

论坛徽章:
0
4 [报告]
发表于 2009-05-21 22:22 |只看该作者
原帖由 Sam1860 于 2009-5-21 22:01 发表
项目里直接用intxx_t, uintxx_t,包括c/c++的项目。不然,大家又是用什么类型的?都是自己typedef吗?

一个通常的习惯是依赖你所使用的库。
比如如果你使用glib,你最好使用它里面定义的类型gint, glong ...如果没有使用类似的有类型定义的库,直接使用c库即可,比如你说到的stdint.h中的。
没有很强烈的理由最好不用自己定义这些,你没有必要去维护各个平台的差异性。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
5 [报告]
发表于 2009-05-21 22:37 |只看该作者

回复 #4 zx_wing 的帖子

为什么不优先依赖C库(stdint.h intXX_t)而是glib(gint、glong)?
为什么一个又一个的库要去发明这些东西?
如果是历史原因, 在C99引入了stdint的情况下, 我们还应该选择其他库中的功能么?

论坛徽章:
0
6 [报告]
发表于 2009-05-21 22:41 |只看该作者
原帖由 OwnWaterloo 于 2009-5-21 22:37 发表
为什么不优先依赖C库(stdint.h intXX_t)而是glib(gint、glong)?
为什么一个又一个的库要去发明这些东西?
如果是历史原因, 在C99引入了stdint的情况下, 我们还应该选择其他库中的功能么?

因为你使用这些库主要是用它们的API,而他们API中的数据类型又用的是自定义的类型,为了避免可能引起的问题,所以最好你自己的类型和它的一致。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
7 [报告]
发表于 2009-05-22 00:10 |只看该作者

回复 #6 zx_wing 的帖子

哦,懂你的意思了。
虽然DWORD、BOOL很难看, 但是在#include <windows.h>之下, 还是尽可能使用它们。
是这个意思吧?

那么, 如果不依赖除标准库以外的东西呢?
嗯 …… 我自己回答了 ……  除了一些玩具代码, 写不出什么东西 ……

那写玩具代码的时候, intXX_t 还是比 gint 要好吧?

论坛徽章:
0
8 [报告]
发表于 2009-05-22 09:01 |只看该作者
原帖由 OwnWaterloo 于 2009-5-22 00:10 发表
哦,懂你的意思了。
虽然DWORD、BOOL很难看, 但是在#include 之下, 还是尽可能使用它们。
是这个意思吧?

那么, 如果不依赖除标准库以外的东西呢?
嗯 …… 我自己回答了 ……  除了一些玩具代码, 写 ...

哈哈,那倒不是。很多开源项目为了移植方便,都只使用标准库的。它们自己实现要用的数据结构或高级功能,例如hashtable, event loop等。
毕竟C没有C++中那种STL

>>那写玩具代码的时候, intXX_t 还是比 gint 要好吧?
自己写着玩的时候肯定不需要再链个GLIB这么麻烦

论坛徽章:
0
9 [报告]
发表于 2011-09-14 18:58 |只看该作者

论坛徽章:
1
射手座
日期:2013-08-21 13:11:46
10 [报告]
发表于 2011-09-14 19:30 |只看该作者
哦,懂你的意思了。
虽然DWORD、BOOL很难看, 但是在#include 之下, 还是尽可能使用它们。
是这个意思吧 ...
OwnWaterloo 发表于 2009-05-22 00:10



DWORD,BOOL敲起来太麻烦,要按着Shift,一路小写多ez
虽然_也要按着Shift...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP