为每个变量创建一个新的typedef有什么意义?

时间:2012-08-25 13:35:12

标签: c++ c typedef

标题有点夸张,但我仍然不理解。

作为最基本的示例,请从size_t

中获取time.h类型
  

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

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

4 个答案:

答案 0 :(得分:14)

  

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

  1. 它使代码更容易理解,您立即知道对象代表什么,“它是某种大小”。将其与裸int进行比较。真正的基础类型并不是直接关注的问题:只要您不知道它的代码仍然可移植

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

  3.   

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

    不要看:你会被诱惑用它做不便携的东西。把它想象成你想到C ++ std::string的方式。你知道它做了什么,你知道如何使用它,但你真的不知道里面是什么。

答案 1 :(得分:11)

size_ t用于确保 portability size_t并不总是“unsigned int”,但它的大小可以代表给定平台上最大的可能对象。

答案 2 :(得分:2)

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

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

  • 简化您的表达,例如指向函数或agreggate的指针;
  • 引入抽象。

答案 3 :(得分:0)

原因是因为类型可以为您提供关于变量代表什么的更好线索。而不是只是看到一堆如果整理,像std :: size_t,std :: ptrdiff_t等类型会告诉你更多关于它的进展情况。