没有定义的typedef结构

问题描述 投票:0回答:2

我正在查看我使用的C ++库的标头,并且有这样一行:

typedef struct asdf_t asdf_t;

源中的任何地方都没有asdf_t的定义。这条线在做什么?

c++ struct typedef
2个回答
0
投票

这就是声明不透明结构!该标头中可能有一些函数和/或类,它们将pointers用作asdf_t类型-C ++中允许使用“未定义”结构。但是,不会(不能)声明作为asdf_t实例的变量,类成员或函数参数。

为什么这么做?

通常,因为您使用的库的创建者不希望您知道该结构的详细信息!但是,它们必须提供这样的“最小”定义,以便您可以使用类等(必要时可以使用或引用该结构)。


0
投票

这是一个转发的声明,基本上,如果没有定义,您也可以使用此类型(因此,您不能做任何需要了解他的确切定义的事情,例如,您不能复制,因为编译器必须知道他的大小)。

© www.soinside.com 2019 - 2024. All rights reserved.