为什么c ++库经常定义自己的原始类型?

Add*_*ddy 6 c++ types naming-conventions

我最近开始使用OpenCL库,我注意到他们正在使用自己的整数类型,比如cl_int和cl_uint,而不是int和unsigned int.

这是为什么?为什么他们不使用语言中默认的类型?这是一个好的做法还是有实际的原因(即更易读的代码)?

das*_*ght 9

过去这样做的原因是便携性.C和C++没有特定的大小保证int,long而且short,库设计者经常需要它.

常见的解决方案是为数据类型定义自己的别名,并根据特定平台更改定义,确保使用适当大小的类型.

这个问题起源于C,并通过引入stdint.h头文件(cstdint在C++中重命名)得到解决.包括这个头可以让你声明的类型int32_t,int16_t等等.然而,引进之前,开发库stdint.h和所需要的汇编缺少这个头平台库使用旧的解决方法.