Typedef在可移植的名称、标签名(typedef struct foo Foo;
)和使复杂(函数)声明可读性更高(typedef int(*cmpfunc)(const void *, const void *);
)等方面非常有用。
但是,在C语言中是否真正需要typedef的情况?使用简单地编写派生类型可以实现相同的效果。
稍微解释一下:我指的是对于语言用户,而不是实现者。整个stdint.h
就是第二类的很好的例子。
结论
感谢您提供的所有信息。我想我可以总结如下:
- C99库需要typedef来实现各种
(u)intN_t
类型。 - 在C89中,您确实希望自己使用typedef来创建类似的可移植类型。
- 在使用
va_arg
宏时可能需要typedef,但我怀疑您实际上不会遇到这些派生类型。
typedef
,你还能如何定义可移植类型呢? - Michael Foukarakisint32_t
等类型,那我就不需要这样做了。 - schot