C 구조체 3

[C 언어] 구조체 초기화 방법

지난 글에서는 지역/전역 변수의 초기화 방법에 대해 알아보았다. 오늘은 구조체의 초기화 방법에 대해 알아보려 한다. 구조체도 마찬가지로 지역 변수, 전역 변수, 동적 할당 등에 따라 초기화 방법이 다르다. 1. 전역 변수 / 지역 변수 초기화 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 typedef struct{ int data[SIZE]; int head; int tail; }QUEUE; QUEUE que; int main(void){ QUEUE que2; for(int i = 0; i

C언어 2023.02.06

[C 언어] 비트필드 구조체에 대해 알아보자

설 명절날 시골에 내려와 오늘은 어떤 글을 올릴까 고민을 하다가 비트필드 구조체에 대해 적어보기로 했다. (PC로 코드 검증이 필요 없는 것을 고민하다 나온 결론) IoT 또는 통신 분야 관련된 Firmware를 개발하다보면 data frame이라는 단어를 많이 마주치게 된다. 위의 그림은 BLE data frame중 하나이다. 위 그림은 많은 통신 분야 또는 chip register를 컨트롤할 때 많이 보게 되는데, 일정한 용량 안에 최대한 많은 데이터 의미를 넣기 때문에 bit 단위로 의미를 부여하게 된다. 예를 들어 위 그림에서 LL Ovhd를 코드로 해석할 때 아래와 같은 부분을 사용할 수 있다. 1 2 3 4 5 6 7 int main(void){ unsigned short length; uns..

C언어 2023.01.21

[C 언어] sizeof 연산자에 대하여

내가 firmware 개발을 처음 했을때 sizeof 연산자에 대해 잘못 알고 사용하여 디버깅을 했던 케이스가 생각나 이 포스팅을 하게 되었다. sizeof에 대해 제대로 알고 있는지 스스로 한번 점검해보는 기회가 되면 좋을 것 같다. 1. sizeof 의 정체 1 2 3 4 int a; printf("%d\n", sizeof(a)); printf("%d\n", sizeof a); cs sizeof를 함수로 잘못 알고 쓰는 사람들이 꽤 많다. 위의 코드에서 sizeof(a)로 사용하는 케이스가 많다보니 기존 코드를 재사용하여 습관적으로 사용하는 사람들은 라이브러리 함수로 오해를 한다. 그러나 sizeof는 ++ -- * 등과 같은 연산자이기 때문에 연산자 우선순위의 법칙에 영향을 받고 위 코드와 같이 (..

C언어 2023.01.11
728x90