openlang

Что означает `[*c]VkPhysicalDevice`?

Поиск не дал мне ответа, хотя вполне возможно, что это было в ziglings и просто вылетело у меня из головы.

Я подключаю Vulkan как системную библиотеку через translate_c в Zig 0.17.0. Получилось такое объявление функции:

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 устойчивую к панике конструкцию, похожую на Java try { ... } finally { ... }, чтобы блоки try и finally м…

    Ответы 2Последняя активность rust
  2. Ввод массивов символов через указатели

    Когда пытаюсь вводить с клавиатуры данные в массивы char, программа каждый раз падает. Как можно удобно считывать с клавиатур…

    Ответы 2Последняя активность c
  3. Может ли функция ввода обойтись без глобальных переменных?

    Хочу написать функцию, которая обрабатывает пользовательский ввод, фильтрует его и возвращает полученную строку вызвавшей её…

    Ответы 2Последняя активность c