6

看着 vulkan.hi 看到这个:

#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || .....
    #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else
    #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
#endif

有谁知道为什么是 64 位?对我来说,总是使用 ifdef 的第一种情况似乎更合理

4

1 回答 1

5

规范中明确指出不可分派的句柄必须是 64 位:

不可分派句柄类型是 64 位整数类型,其含义取决于实现,并且可以直接在句柄中编码对象信息,而不是指向软件结构。不可分派类型的对象在一个类型内或跨类型可能没有唯一的句柄值。如果句柄值不是唯一的,则销毁一个此类句柄不得导致其他类型的相同句柄无效,并且如果该句柄值的创建次数多于创建次数,则不得导致相同类型的相同句柄无效被摧毁。

于 2016-02-23T16:03:20.280 回答