C의 비트 필드에서 유니온을 형성하는 것이 가능하고 정확합니까?

전투기

다음 조합이 있으며 올바르게 작동합니다.

#pragma pack(1)
...
union
{
    uint8_t opcode;
    struct
    {
        uint8_t z : 3;
        uint8_t y : 3;
        uint8_t x : 2;
    };
}opcode;    

유니온의 크기는 정확히 1 바이트입니다.

printf ("%zu\n", sizeof opcode);  

문제는 비트 필드에서 유니온을 만들려고 할 때 발생합니다.

union
{
    uint8_t opcode;
    struct
    {
        uint8_t z : 3;
        union
        {
            uint8_t y : 3;
            struct
            {
                uint8_t p : 2;
                uint8_t q : 1;
            };
        }y;
        uint8_t x : 2;
    };
}opcode;    

결과

printf ("%zu\n", sizeof opcode);  

3 바이트입니다. 물론 매크로를 사용하여이 문제를 해결할 수 있지만 가능합니까?

Klas Lindbäck

아니요, 바이트의 일부인 구조체를 가질 수 없습니다.

이론적 해석:

구조체에 대한 포인터를 만들 수 있어야하며 주소 지정 가능한 최소 단위는 1 바이트입니다.

참고 :이 제한은 내가 아는 모든 컴파일러에 존재합니다. 실제로 C 표준에 의해 의무화되었는지 여부는 모르겠습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VPS 내에서 데비안을 업데이트하는 것이 가능하고 안전합니까?

분류에서Dev

열거 형 내부에서 비트 필드 조합을 선언하면 열거 형 외부에서 선언하는 것과 다른 결과가 생성되는 이유는 무엇입니까?

분류에서Dev

장고 URL 필드가 특정 도메인 또는 호스트 이름에서 온 것인지 어떻게 확인합니까?

분류에서Dev

C90에서 단일 구조체의 필드로 비트 필드 및 기타 데이터 유형을 갖는 것은 나쁜 습관입니까?

분류에서Dev

하트 비트 확장 : 임의의 페이로드를 허용하는 것이 합리적입니까?

분류에서Dev

<script> 참조에 .js 파일 유형을 포함하지 않는 것이 의미 상 정확합니까?

분류에서Dev

서버에서 예외를 throw하고 Java의 클라이언트에서 처리하고 처리하는 것이 가능합니까?

분류에서Dev

SQL Server 테이블에 800 개 이상의 컨트롤 속성을 저장하는 것이 좋은 방법입니까? 온라인 공유 제어 속성

분류에서Dev

pythons의 요청 lib에서 SSL 인증서 확인을 비활성화하는 것이 안전합니까?

분류에서Dev

고성능 모드의 Windows7 32 비트에서 노트북이 절전 모드로 들어가는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

Windows 10에서 업데이트를 비활성화하는 것이 실제로 불가능합니까?

분류에서Dev

고유면 공간에 테스트 이미지를 투영하는 것은 정확히 무엇을 의미합니까?

분류에서Dev

React : 각 자식에게 이벤트 리스너를 추가하고 부모의 이벤트 핸들러에 대한 참조를 전달하는 것이 비효율적입니까? 이벤트 버블 링이 가능합니까?

분류에서Dev

특성에서이 생성자를 정의하는 것이 왜 불가능합니까?

분류에서Dev

일련의 작업을 전달하고 ngrx 효과에서 탐색하는 것이 가능합니까?

분류에서Dev

req.param의 값이 NaN 유형인지 확인하고 값이 있으면 값을 설정하는 것이 가장 좋은 기능은 무엇입니까?

분류에서Dev

고정 된 종횡비로 유동 폭 컨테이너 내부의 이미지를 중앙 / 크기 조정하는 것이 가능합니까?

분류에서Dev

Oracle DB에서 필드의 데이터 유형을 변경하면 성능이 저하됩니까?

분류에서Dev

C에서 두 유형이 서로 "호환"된다는 것은 정확히 무엇을 의미합니까?

분류에서Dev

사용자 입력의 유효성을 검사하고 올바른 유형이고 지정된 범위 내에 있는지 어떻게 확인합니까?

분류에서Dev

단일 메서드에서 형식 검사를 사용하는 것보다 다른 형식의 메서드 오버로드가 더 성능이 좋습니까?

분류에서Dev

Ember.js : 특정 라우트 / 컨트롤러 믹스 인에 의존성을 주입하는 것이 가능합니까?

분류에서Dev

서로 다른 (하지만 겹치는) 합계 유형의 두 세트 사이에 세트 유니온을 수행하는 방법

분류에서Dev

CenstOS 호스트 머신에서 데비안으로 Docker 컨테이너를 실행하는 것이 가능하고 안전합니까?

분류에서Dev

정수 배열에 Float를 곱하면 Julia에서 Float 배열을 생성하는 것과 비교하여 성능이 증가하거나 감소합니까?

분류에서Dev

이미지의 정보를 숨기고 비디오로 변환하고 FFMPEG로 다시 해독하는 것이 가능합니까?

분류에서Dev

PhpUnit을 사용하여 Laravel로 서비스를 테스트하는 것이 어떻게 가능합니까?

분류에서Dev

길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

분류에서Dev

길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

Related 관련 기사

  1. 1

    VPS 내에서 데비안을 업데이트하는 것이 가능하고 안전합니까?

  2. 2

    열거 형 내부에서 비트 필드 조합을 선언하면 열거 형 외부에서 선언하는 것과 다른 결과가 생성되는 이유는 무엇입니까?

  3. 3

    장고 URL 필드가 특정 도메인 또는 호스트 이름에서 온 것인지 어떻게 확인합니까?

  4. 4

    C90에서 단일 구조체의 필드로 비트 필드 및 기타 데이터 유형을 갖는 것은 나쁜 습관입니까?

  5. 5

    하트 비트 확장 : 임의의 페이로드를 허용하는 것이 합리적입니까?

  6. 6

    <script> 참조에 .js 파일 유형을 포함하지 않는 것이 의미 상 정확합니까?

  7. 7

    서버에서 예외를 throw하고 Java의 클라이언트에서 처리하고 처리하는 것이 가능합니까?

  8. 8

    SQL Server 테이블에 800 개 이상의 컨트롤 속성을 저장하는 것이 좋은 방법입니까? 온라인 공유 제어 속성

  9. 9

    pythons의 요청 lib에서 SSL 인증서 확인을 비활성화하는 것이 안전합니까?

  10. 10

    고성능 모드의 Windows7 32 비트에서 노트북이 절전 모드로 들어가는 것을 방지하는 방법은 무엇입니까?

  11. 11

    Windows 10에서 업데이트를 비활성화하는 것이 실제로 불가능합니까?

  12. 12

    고유면 공간에 테스트 이미지를 투영하는 것은 정확히 무엇을 의미합니까?

  13. 13

    React : 각 자식에게 이벤트 리스너를 추가하고 부모의 이벤트 핸들러에 대한 참조를 전달하는 것이 비효율적입니까? 이벤트 버블 링이 가능합니까?

  14. 14

    특성에서이 생성자를 정의하는 것이 왜 불가능합니까?

  15. 15

    일련의 작업을 전달하고 ngrx 효과에서 탐색하는 것이 가능합니까?

  16. 16

    req.param의 값이 NaN 유형인지 확인하고 값이 있으면 값을 설정하는 것이 가장 좋은 기능은 무엇입니까?

  17. 17

    고정 된 종횡비로 유동 폭 컨테이너 내부의 이미지를 중앙 / 크기 조정하는 것이 가능합니까?

  18. 18

    Oracle DB에서 필드의 데이터 유형을 변경하면 성능이 저하됩니까?

  19. 19

    C에서 두 유형이 서로 "호환"된다는 것은 정확히 무엇을 의미합니까?

  20. 20

    사용자 입력의 유효성을 검사하고 올바른 유형이고 지정된 범위 내에 있는지 어떻게 확인합니까?

  21. 21

    단일 메서드에서 형식 검사를 사용하는 것보다 다른 형식의 메서드 오버로드가 더 성능이 좋습니까?

  22. 22

    Ember.js : 특정 라우트 / 컨트롤러 믹스 인에 의존성을 주입하는 것이 가능합니까?

  23. 23

    서로 다른 (하지만 겹치는) 합계 유형의 두 세트 사이에 세트 유니온을 수행하는 방법

  24. 24

    CenstOS 호스트 머신에서 데비안으로 Docker 컨테이너를 실행하는 것이 가능하고 안전합니까?

  25. 25

    정수 배열에 Float를 곱하면 Julia에서 Float 배열을 생성하는 것과 비교하여 성능이 증가하거나 감소합니까?

  26. 26

    이미지의 정보를 숨기고 비디오로 변환하고 FFMPEG로 다시 해독하는 것이 가능합니까?

  27. 27

    PhpUnit을 사용하여 Laravel로 서비스를 테스트하는 것이 어떻게 가능합니까?

  28. 28

    길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

  29. 29

    길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

뜨겁다태그

보관