我最近使用了大量的文件描述符,我一直在思考它们为什么被实现成整数?
这意味着它们很容易与其他整数混淆,并且没有办法在没有上下文的情况下知道它们是什么、指向什么、是否打开等等。
在 C 语言中,FILE
是一个不透明的结构体类型。许多人也使用 typedef
将例如 status_t
定义为整数,以便他们的函数目的明显。似乎最好的方法是将其实现为不透明类型,或者(例如在 C++ 中)实现为一个类,可以处理部分实现并使 namespace
更加干净(调用 pipe()
或 open()
似乎很无害,但如果没有上下文,不清楚正在进行管道传输或打开哪个文件)。就像 std::file_descriptor
一样,具有用于创建管道或打开文件等的构造函数/工厂函数。
我希望这个问题适用于这个网站;我试图将其表述为“为什么做出这个特定的决定?”如果有人知道更适合的地方,请告诉我。
typedef
并不会创建一个新的类型,它只是为现有的类型创建一个新的名称。typedef int filedes_t
并不能解决OP所问的任何问题。 - Keith Thompsontypedef
以及不透明结构体。 - Useless