如何编组C头文件中由宏定义的结构体
How to marshall struct defined from macros in C header?
我不知道如何编组Vulkan API头文件的下一部分以供c#使用:
#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
...
VK_DEFINE_HANDLE(VkInstance)
我需要在这个方法中使用:
VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
const VkInstanceCreateInfo* pCreateInfo,
const VkAllocationCallbacks* pAllocator,
VkInstance* pInstance
);
指向vkInstance
的指针。但是,这个神奇的东西是什么:宏风格的typedef struct object##_T* object;
(预处理器)?
##是c++预处理器中的连接操作符——所以在上面的例子中
#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
VK_DEFINE_HANDLE(VkInstance)
展开为
typedef struct VkInstance_T* VkInstance;
从您的评论来看,您似乎想知道VkInstance
句柄的内容,以便您可以将其保存到磁盘或通过网络传输。
这是不可能的不仅没有指定VkInstance
(以及任何其他Vulkan句柄)的实际内容,而且它们不能在编译时指定,因为它们的内容完全依赖于您的程序碰巧与一起运行的Vulkan实现(例如,Nvidia的VkInstance
的内容肯定不会匹配AMD的VkInstance
,或英特尔的)。
即使您知道结构布局,也不可能简单地保存它,因为我可以向您保证,它将包含对无法保存的运行时资源的引用,例如套接字或驱动程序资源句柄。
相关文章:
- 如何将c结构体定义转换为c++
- 如何声明在不同命名空间中定义的结构体
- P/在结构体中调用定义长度的C char*数组
- 定义要在包含的头文件中访问的结构体的正确方法
- 使用结构体作为参数:错误:结构体未定义
- 返回指向类定义的结构体的指针,多个作用域操作符
- c++编译器抱怨重定义结构体
- 访问结构体中定义的枚举的值
- 如何在单独的头文件中定义结构体中的char*数组?
- 访问结构体中定义的枚举值
- 定义错误结构体中的枚举
- 结构体的重新定义错误.头文件的问题
- 使用QGLShaderProgram从Qt传递自定义类型(结构体)统一到GLSL
- 如何编组C头文件中由宏定义的结构体
- 自定义结构体与之交互,就好像它是int型一样
- 使用已定义结构体的vector到达未初始化内存
- 如何在c++中(非cli)将自定义结构体传递给_variant_t
- int型到自定义结构体的转换
- 如何在c++中初始化自定义结构体的动态数组
- 在flex错误c++中定义结构体