extra_size_annotation_carray

extra_size_annotation_carray

Struct 하위 클래스의 필드 중 네이티브 배열의 크기를 나타내는 Array 어노테이션은 정확히 하나만 있어야 해요. 배열 크기 어노테이션이 두 개 이상 붙으면 이 진단이 발생하는 거예요.

출처: extra_size_annotation_carray

본문

설명

analyzer는 Struct 하위 클래스의 필드가 네이티브 배열의 크기를 나타내는 어노테이션을 한 개보다 많이 가질 때 이 진단을 내보내요. FFI에 대한 자세한 내용은 dart:ffi를 사용한 C 연동(C interop) 문서를 참고해 주세요.

예시

아래 코드는 필드 a0가 네이티브 배열의 크기를 지정하는 어노테이션 두 개를 갖고 있어서 이 진단이 발생해요.

import 'dart:ffi';

final class C extends Struct {
  @Array(4)
  @Array(8)
  external Array<Uint8> a0;
}

흔한 해결 방법

어노테이션을 하나만 남기고 나머지는 제거하면 돼요.

import 'dart:ffi';

final class C extends Struct {
  @Array(8)
  external Array<Uint8> a0;
}

더 알아보기

  • Array 어노테이션으로 네이티브 배열의 크기를 정해 주면, 그 만큼의 메모리가 Struct에 반영돼요. 배열 크기는 어노테이션 하나로 명확하게 지정해 주세요.