openlang

`[*c]VkPhysicalDevice` 是什么意思?

搜索没让我找到答案,不过很可能 ziglings 里讲过,只是我给忘了。

我在 Zig 0.17.0 中通过 translate_c 引入作为系统库的 Vulkan。生成的声明是这样的。

pub extern fn vkEnumeratePhysicalDevices(instance: VkInstance, pPhysicalDeviceCount: [*c]u32, pPhysicalDevices: [*c]VkPhysicalDevice) VkResult;

我不明白 [*c] 的含义。这只是说它应该指向数组的第一个元素吗?

下面的写法终于能编译了,不过我怀疑有更常用的写法。

    var adapters = try allocator.alloc(vulkan.VkPhysicalDevice, adapter_count);
    _ = vulkan.vkEnumeratePhysicalDevices(instance, &adapter_count,
        @ptrCast(&adapters[0]));

先谢谢愿意指点的人!

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去

同一个问题的其他角度

  1. 让清理块真正执行时才开始可变借用

    怎样在 Rust 中写一个 panic 安全的机制,类似 Java 的 try { ... } finally { ... },同时允许 try 和 finally 块分别可变借用同一个值? 我需要的是,无论正常离开还是因 panic 栈展开而离开…

    回复 2最近活动 rust
  2. 通过指针输入字符数组

    每次尝试从键盘往一些 char 数组里输入内容,程序最后都会崩溃。 有什么简单方便的方法,可以从键盘读取 char 数组并保存下来?

    回复 2最近活动 c
  3. 输入函数能不依赖全局变量吗?

    我想写一个函数,处理并过滤用户输入,然后把得到的字符串返回给调用它的函数。 能不能不声明下面例子中的这种全局变量,也实现这个功能?

    回复 2最近活动 c