|
답변 감사합니다 ^^ 그런데요~ ㅠㅠ
uint8_t *x = &(test.a);
저기에서 "[C++ Error] Unit1.cpp(23): E2011 Illegal to take address of bit field " 에러가 나네요..
음;;;; 어떻게 해야 할까요??? 다시한번 답변 부탁드립니다 ^^
주누 님이 쓰신 글 :
: 구조체 내에 내부 변수가 많은 것이고 모두 같은 타입이라고 할때
: struct TEST{
: uint8_t a: 1;
: uint8_t b: 1;
: ...
: }test;
: uint8_t *x = &(test.a);
: for( int i=0 ; i < sizeof(TEST)/sizeof(uint8_t); i++){
: if(*x == 0){
: ...
: }else{
: ...
: }
: x++;
: }
:
: 실험은 안해봐서 모르지만 아마 작동은 할겁니다. (제 기억이 맞나면 구조체 내부 변수의 경우 주소가 이어져 있음으로)
: (구조체 align때문에 안될 수도 있습니다만.)
: 그런데 보기도 어렵고 이해도 어렵고 이후 문제가 될 가능성이 높아 질 것같습니다.
:
: 구조체 님이 쓰신 글 :
: : 통신을 이용해 각각의 비트 값을 저장 하여 확인하고 있는데요...
: :
: : 다름이 아니라 구조체에 값을 빠르게 확인할 방법이 없어서요...
: :
: : struct TEST{
: : uint8_t a: 1;
: : uint8_t b: 1;
: : }test;
: :
: : test 라는 구조체가 있다고 합시다..
: :
: : 이 test 구조체에 a와 b의 값이 0인지 1인지 알고 싶습니다...
: :
: : 그런데 저런게 100개가 있다고 하면 코드상 test.a, test.b.... 이런식으로 하면 너무 길어지잔아요..
: :
: : 그래서 test 구조체의 0비트부터 100비트까지 간단하고 빠르게 값을 확인 할 수 있는 방법이 있을까요??
: :
: : 많은 조언 부탁드립니다 ㅠㅠ;;
|