如何在知道第一个元素的情况下加载结构



我在某些地方看到

struct dri2_egl_config *dri2_conf = dri2_egl_config(conf);

结构体的位置

struct dri2_egl_config
{
   _EGLConfig         base;
   const __DRIconfig *dri_single_config;
   const __DRIconfig *dri_double_config;
};

conf_EGLConfig*.
但是当我在C++上尝试此操作时,它无法编译。如何在C++访问其他结构参数

时执行此操作?

看起来像C中的继承。对于 C++ 和 C,标准确保字段没有重新排序。因此,在 C 中,基字段地址保证与整个结构相同。

dri2_egl_config(( 在 C 中似乎是一个正常的函数。 在C++中,它将是一个永远不会返回指针的构造函数。此外,如果您考虑虚拟信息,C++中的地址会更复杂。对于没有虚拟方法等的简单情况,如果您知道字段大小,您仍然可以通过地址偏移量进行寻址。但这需要强制转换才能使指针类型保持一致。因此,dri2_egl_config(( 似乎返回一个dri2_egl_config *。这一切都是直截了当的 C。

最新更新