C++重定义变量类型
程序员文章站
2022-03-23 19:35:56
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++的标准类型说明头已经做到跨平台兼容。
所以,提前做好类型的定义,可以确保后续平台迁移的时候,设计的内存和实际的内存保持一致,这样内存位宽方面基本不会出现问题了。后续的研发过程中如果出现了更多需要自定义的类型,可以按照同样的道理进行重定义。
这样做的还有个好处是定义个使用进行分开设计,假如后续需要对某个算法的位宽进行改动,实际上只需要对某个自定义类型的说明符的定义进行更改,而不需要对实际的业务代码进行修改。下一篇: MySQL运算符的使用分析
推荐阅读
-
Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
-
Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
-
c++ string类型成员变量在调用构造函数后未能正确赋值
-
c++ 模板类,方法返回值类型是typedef出来的,或者是auto,那么此方法在类外面如何定义?
-
c++中的重载,重写,重定义
-
Java基础学习-基本数据类型变量的定义和使用
-
c++中使用类定义自己的数据类型
-
编写一个表示二维平面上的点的类MyPoint,满足以下条件: 1、定义private的成员变量x和y,表示点的x和y坐标,类型为double
-
C++自定义MyString类型字符串,重载相应的操作符
-
c/c++ 标准库 set 自定义关键字类型与比较函数