Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[835] 비트필드(16비트중 하위 8비트)를 unsigned char형에 담고싶습니다.
김인구.구야 [whileone] 1661 읽음    2002-07-09 15:22
struct parallel {
    unsigned char pin0: 1;
    unsigned char pin1: 1;
    unsigned char pin2: 1;
    unsigned char pin3: 1;
    unsigned char pin4: 1;
    unsigned char pin5: 1;
    unsigned char pin6: 1;
    unsigned char pin7: 1;
    unsigned char       : 8;
};

위와 같이 비트필드를 구성했습니다.

struct parallel p; 라고 선언해주고
p를 outportb의 인자로 넣고 싶어서
outportb(0x378, (unsigned char)p)
이렇게 했더니 에러가 났습니다.
비트필드도 구조체인데 아무생각없이 int형 처럼 생각했던게 잘못이었습니다.

궁여지책으로 만든 cast가 아래와 같습니다.

unsigned char cast(struct parallel p) {
    unsigned char data = 0;

    data =  p.pin0;
    data += p.pin1 << 1;
    data += p.pin2 << 2;
    data += p.pin3 << 3;
    data += p.pin4 << 4;
    data += p.pin5 << 5;
    data += p.pin6 << 6;
    data += p.pin7 << 7;

    return data;
}

C 자체에서 제공해주는 방법을 가르쳐주시면 감사하겠습니다.
그리고 비트필드는 어떤 곳에서 많이 사용하시고 계신지요...?

+ -

관련 글 리스트
835 비트필드(16비트중 하위 8비트)를 unsigned char형에 담고싶습니다. 김인구.구야 1661 2002/07/09
838     이런 경우에 굳이 비트필드를 쓸 필요가 있을까요? 김백일 1583 2002/07/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.