typedef struct DXGI_SAMPLE_DESC {
UINT Count;
UINT Quality;
} DXGI_SAMPLE_DESC, *LPDXGI_SAMPLE_DESC;
那么在上面的多重采样的结构定义中,使用typedef并重复相同结构名称的真正原因是什么。还有 *LPDXGI_SAMPLE_DESC;
为什么是指针? typedef 指针表示什么?
最佳答案
这主要是由于 C 处理结构类型的方式。 C++ 中的工作方式略有不同,这就是您不再经常看到这种模式的原因。
请注意,DirectX 是一个 COM-API因此是根据 C 来指定的,即使它使用对象和类也是如此。
DXGI_SAMPLE_DESC
的第一个是标签名,第二个是 typedef 的名称。
省略标记名的主要缺点是它会阻止类型被前向声明。还有一些technical reasons与 Microsoft 的工具链如何为 COM 接口(interface)生成代码有关,为什么您不想跳过标记名称。
另一方面,无论何时在 C 代码中使用该类型,省略 typedef 都会迫使您编写 struct DXGI_SAMPLE_DESC
而不是普通的 DXGI_SAMPLE_DESC
。
*LPDXGI_SAMPLE_DESC
是第二个 typedef,它引用 指向 DXGI_SAMPLE_DESC
的指针,而不是普通结构类型本身。这是 standard typedef syntax这在 C++ 中仍然是相同的。
关于c++ - Direct3D typedef 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44461072/