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에서 Java의 try { ... } finally { ... }와 비슷하게 패닉에도 안전한 구조를 만들고, try와 finally 블록이 같은 값을 각각 가변으로 빌리게 하려면 어떻게 해야 하나요? 원하는 건 정상…

    답글 2최근 활동 rust
  2. 포인터를 통해 문자 배열 입력받기

    키보드에서 char 배열들로 입력을 받으려고 하면 프로그램이 계속 죽습니다. 키보드에서 char 배열을 읽어서 저장하는 간단한 방법이 뭘까요?

    답글 2최근 활동 c
  3. 전역 변수에 의존하지 않는 입력 함수를 만들 수 있나요?

    사용자 입력을 처리하고 걸러 낸 뒤, 호출한 함수에 결과 문자열을 돌려주는 함수를 만들고 싶습니다. 아래 예처럼 전역 변수를 선언하지 않고도 가능할까요?

    답글 2최근 활동 c