欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++重定义变量类型

程序员文章站 2022-06-24 20:26:00
c++重定义变量类型:这种做法主要是用来进行跨平台适配。不同运行环境下面,例如32位,64位系统,某些例如int、long、size_t等类型说明符虽然一样,但是实际占用的位宽却是完全不一样的。 数...

c++重定义变量类型:这种做法主要是用来进行跨平台适配。不同运行环境下面,例如32位,64位系统,某些例如int、long、size_t等类型说明符虽然一样,但是实际占用的位宽却是完全不一样的。

数据的位宽决定了某个变量数据量的承载范围。数据量的承载范围在算法工程中是非常重要的事情,它决定了处理数据的容量范围,决定了硬盘数据和内存数据的存储方式。

如果切换平台产生了实际数据位宽和设计数据位宽不一致,算法程序是无法正常运行的,实际中可能随时会出现诡异的崩溃问题。如果设计之初不重视这个问题的话,后续复查崩溃问题的原因事件非常痛苦的事情。切记,和内存相关的崩溃问题,都是算法领域里面首先需要避免的问题。

正确的解决方案:

所以,我们研发算法工程之前,需要花费一定的工作量,将可能需要的所有常用类型进行重定义。

-----重定义类型的名称需要明确无歧义

-----重定义类型对应的实际类型是唯一性的,不随平台而变动

示例:

typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef signed int int32;
typedef unsigned int uint32;
//typedef signed long long int64;
//typedef unsigned long long uint64;
typedef  uint64_t uint64;
typedef  int64_t int64;

注意:各个平台对于64位的强定义(longlong类型)的标准不是很统一,不同的编译器的支持也是不一样。c++的标准类型说明头已经做到跨平台兼容。

所以,提前做好类型的定义,可以确保后续平台迁移的时候,设计的内存和实际的内存保持一致,这样内存位宽方面基本不会出现问题了。后续的研发过程中如果出现了更多需要自定义的类型,可以按照同样的道理进行重定义。

这样做的还有个好处是定义个使用进行分开设计,假如后续需要对某个算法的位宽进行改动,实际上只需要对某个自定义类型的说明符的定义进行更改,而不需要对实际的业务代码进行修改。