길이가 0 인 가변 길이 배열?

glglgl

C에서 배열은 일반적으로 크기 0을 가질 수 없습니다 (하나 또는 다른 컴파일러 측 확장을 사용하지 않는 한).

OTOH, 길이가 0으로 판명 될 수있는 VLA가 있습니다.

허용됩니까?

다음 코드에 대해 이야기하고 있습니다.

void send_stuff()
{
    char data[4 * !!flag1 + 2 * !!flag2];
    uint8_t cursor = 0;
    if (flag1) {
        // fill 4 bytes of data into &data[cursor]
        cursor += 4;
    }
    if (flag2) {
        // fill 2 bytes of data into &data[cursor]
        cursor += 2;
    }
}

결과는 data플래그 조합에 따라 길이가 0, 2, 4 또는 6 인 배열입니다.

문제는 이제 배열의 길이가 0 인 경우에 유효한 코드입니까?

Shafik Yaghmour

우리는에 갈 경우에 유효하지 않은 초안 C99 표준 섹션 6.7.5.2 배열 선언자5 (라고 강조 광산 ) :

크기가 정수 상수 표현식이 아닌 표현식 인 경우 : 함수 프로토 타입 범위의 선언에서 발생하면 *로 대체 된 것처럼 처리됩니다. 그렇지 않으면 평가 때마다 0보다 큰 값을 갖게됩니다 . [...]

실제로 플래그를 사용하여 정의되지 않은 동작에 clang대해 새니 타이 저활성화하면 -fsanitize=undefined이 경우에 대한 런타임 경고가 생성 될 수 있습니다 .

런타임 오류 : 가변 길이 배열 경계가 양수가 아닌 값 0으로 평가됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

길이가 0 인 배열 사용?

분류에서Dev

헤더 파일의 C ++ 길이가 0 인 배열

분류에서Dev

Zig 컴파일러는 comptime 가변 길이를 가진 배열을 가능한 길이가 0 인 배열로 간주합니까?

분류에서Dev

합계가 0 인 가장 큰 부분 배열의 길이 찾기

분류에서Dev

R의 "길이가 0 인 인수"

분류에서Dev

구조에서 길이가 0 인 배열은 어떻게 유용합니까?

분류에서Dev

javascript 및 angularjs에서 길이가 0보다 큰 배열 수 확인

분류에서Dev

R : "인수 길이가 0"(빈 플롯)

분류에서Dev

c ++ 가변 길이 인수 목록 대신 배열 전달

분류에서Dev

가변 길이 확인

분류에서Dev

배열 속성이 null이거나 길이가 0 인 MongoDB 문서를 어떻게 쿼리합니까?

분류에서Dev

배열에 요소가 있지만 길이가 0입니다.

분류에서Dev

C의 가변 길이 열

분류에서Dev

키 / 값 쌍을 할당 한 후 배열의 길이가 0 인 이유는 무엇입니까? (JS)

분류에서Dev

BASH : awk를 사용하여 고유 한 줄을 필터링하면 길이가 0 인 배열이됩니다.

분류에서Dev

TypeScript의 가변 길이 배열 튜플?

분류에서Dev

가변 길이의 정수 배열

분류에서Dev

가변 길이의 정수 배열

분류에서Dev

가변 길이 배열 간 복사 C #

분류에서Dev

OpenCL의 가변 길이 배열 계산

분류에서Dev

자바 : 배열의 길이가 1 인 이유

분류에서Dev

Java에서 가변 길이 utf8 바이트 배열 인코딩

분류에서Dev

Java에서 가변 길이 정수 배열을 0으로 카운트 다운

분류에서Dev

PHP : 길이가 0 인 문자열의 배열 구문이 문자열을 배열로 캐스팅하는 이유는 무엇입니까?

분류에서Dev

길이가 0 인 문자형 벡터를 빈 문자열로 처리

분류에서Dev

포인터로 배열 길이 가져 오기

분류에서Dev

배열 인수가 길이를 설정해야합니다.

분류에서Dev

길이가 다른 배열의 중첩 루프 인쇄

분류에서Dev

명시적인 길이가없는 배열의 sizeof

Related 관련 기사

  1. 1

    길이가 0 인 배열 사용?

  2. 2

    헤더 파일의 C ++ 길이가 0 인 배열

  3. 3

    Zig 컴파일러는 comptime 가변 길이를 가진 배열을 가능한 길이가 0 인 배열로 간주합니까?

  4. 4

    합계가 0 인 가장 큰 부분 배열의 길이 찾기

  5. 5

    R의 "길이가 0 인 인수"

  6. 6

    구조에서 길이가 0 인 배열은 어떻게 유용합니까?

  7. 7

    javascript 및 angularjs에서 길이가 0보다 큰 배열 수 확인

  8. 8

    R : "인수 길이가 0"(빈 플롯)

  9. 9

    c ++ 가변 길이 인수 목록 대신 배열 전달

  10. 10

    가변 길이 확인

  11. 11

    배열 속성이 null이거나 길이가 0 인 MongoDB 문서를 어떻게 쿼리합니까?

  12. 12

    배열에 요소가 있지만 길이가 0입니다.

  13. 13

    C의 가변 길이 열

  14. 14

    키 / 값 쌍을 할당 한 후 배열의 길이가 0 인 이유는 무엇입니까? (JS)

  15. 15

    BASH : awk를 사용하여 고유 한 줄을 필터링하면 길이가 0 인 배열이됩니다.

  16. 16

    TypeScript의 가변 길이 배열 튜플?

  17. 17

    가변 길이의 정수 배열

  18. 18

    가변 길이의 정수 배열

  19. 19

    가변 길이 배열 간 복사 C #

  20. 20

    OpenCL의 가변 길이 배열 계산

  21. 21

    자바 : 배열의 길이가 1 인 이유

  22. 22

    Java에서 가변 길이 utf8 바이트 배열 인코딩

  23. 23

    Java에서 가변 길이 정수 배열을 0으로 카운트 다운

  24. 24

    PHP : 길이가 0 인 문자열의 배열 구문이 문자열을 배열로 캐스팅하는 이유는 무엇입니까?

  25. 25

    길이가 0 인 문자형 벡터를 빈 문자열로 처리

  26. 26

    포인터로 배열 길이 가져 오기

  27. 27

    배열 인수가 길이를 설정해야합니다.

  28. 28

    길이가 다른 배열의 중첩 루프 인쇄

  29. 29

    명시적인 길이가없는 배열의 sizeof

뜨겁다태그

보관