4

标题有点夸张,但还是没看懂。

作为一个最基本的例子,从 获取size_t类型time.h

size_t <...> 在头文件(以及其他)中定义为无符号整数类型。

甚至重命名unsigned int为 有什么意义size_t?这样的事情通常会使代码更难理解,因为它们让开发人员寻找那些类型声明来理解,即使它是重命名的基本类型,或者可能是一些类/结构。然而,我看到这在不同的图书馆中做了很多。

4

4 回答 4

14

甚至将 unsigned int 重命名为 size_t 有什么意义?这样的事情往往使代码更难理解

  1. 它使代码更容易理解,您立即知道对象代表什么,“它是某种大小”。将其与裸露的int. 真正的底层类型没有直接关系:只要您不知道它,您的代码就保持可移植性

  2. 今天它可能是一个,unsigned int但也许明天它会是一个unsigned long long。只要您的程序使用正确的类型,它就是面向未来的

他们让开发人员寻找那些类型声明

不要看:你会很想用它做非便携式的事情。按照您对 C++ 的看法来思考它std::string。你知道它的作用,你知道如何使用它,但你并不真正知道里面是什么。

于 2012-08-25T13:38:08.167 回答
11

size_t 用于确保可移植性size_t并不总是"unsigned int",但它是可以表示给定平台上最大可能对象的大小。

于 2012-08-25T13:37:21.137 回答
2

对于标准 C 库等低级库,typedef对于增加用户程序的可移植性很重要;没有辩论。

另一方面,在程序中使用别名是一个有趣的问题。主要有两个原因:

  • 简化您的表达式,例如指向函数或聚合的指针;
  • 引入抽象。
于 2012-08-25T14:07:40.193 回答
0

原因是类型可以为您提供关于变量代表什么的更好线索。std::size_t、std::ptrdiff_t 等类型会告诉您更多关于正在发生的事情的信息,而不是仅仅看到一堆 if 整数。

于 2012-08-26T20:20:51.893 回答