본문 바로가기

Programming/C6

[C] union(공용체) 이란 union(공용체)이란 C언어에서 union은 하나의 메모리 공간을 여러 가지 방식으로 해석할 수 있도록 하는 데이터 타입입니다. 이는 구조체와 유사하지만 구조체는 각 멤버 변수가 메모리 공간을 따로 사용하는 반면, union은 모든 멤버 변수가 같은 메모리 공간을 공유합니다. 실제 사용 예시는 다음과 같습니다. ADC_CONFIG는 구조체이고 HADC는 공용체입니다. #include typedef struct { unsigned char CNFG1; unsigned char CNFG2; unsigned short MODE; } ADC_CONFIG; typedef union { ADC_CONFIG cnfg; unsigned char byte[4]; } HADC; int main(){ ADC_CONFIG .. 2023. 3. 17.
[C] bit 연산자를 사용하여 bit set, clear, toggle 하기 bit clear 비트 단위 AND 연산자를 이용하여 비트를 클리어한다. P0 = P0 & ~(1 2023. 3. 14.
[C] 소스 코드를 여러 파일로 나누기 (feat. 컴파일, 링킹) 소개 작성한 소스 코드의 양이 많아지면 이를 하나의 파일로 관리하기 보다 여러 파일로 나누어 관리하는 게 좋다. 여러 파일로 분리하면 코드의 구조를 보다 명확하게 파악할 수 있고, 코드 수정 및 유지 보수에 유리하기 때문이다. 또한, 이를 통해서 필요한 파일만 컴파일 함으로써 컴파일 시간을 줄일 수 있다. 이번 글에서는 C언어에서 소스코드를 여러 파일로 나누어 관리하는 방법을 살펴보려 한다. 아래의 코드 예시를 통해 소스 코드를 여러 파일로 나누는 방법을 살펴보려한다. main.c 파일을 만들고 아래와 같이 작성해보자. #include int add(int a, int b) { printf("add function\n"); return a + b; } int main() { int ret = add(1,.. 2023. 3. 12.
[C] 배열 포인터란? 배열 포인터란 배열 포인터는 배열을 가리키는 포인터입니다. 포인터는 변수의 주소를 저장하기 위한 변수형이며, 저장한 주소를 해석하는 방법을 의미합니다. 즉, int형 포인터는 int 형 주소를 저장하기 위한 변수형이고 저장한 주소를 int형으로 해석합니다. 이와 마찬가지로 배열 포인터는 배열의 주소를 저장하고 있고 저장한 주소를 배열로 해석합니다. 배열 포인터 선언 크기가 3인 int형 배열 x의 주소를 담는 포인터 변수 p는 아래와 같이 선언합니다. int x[3]; int(*p)[3] = &x; 조금 복잡해보이지만 배열 포인터를 선언하는 규칙은 다른 int, double 포인터와 동일합니다. 예를 들면, int, double의 포인터 변수는 다음과 같이 선언합니다. int n; int* p1 = &n.. 2023. 2. 26.
[C] 윈도우에 gcc 컴파일러 설치하는 방법 gcc는 대표적인 오픈소스 C/C++ 컴파일러다. 윈도우에서 gcc 컴파일러를 설치하는 방법에 대해 정리하려 한다. 먼저 gcc를 설치하기 위해 아래의 링크로 이동한다. https://github.com/brechtsanders/winlibs_mingw/releases/ Releases · brechtsanders/winlibs_mingw winlibs standalone build of GCC compiler and MinGW-w64 - brechtsanders/winlibs_mingw github.com 제일 상단 게시글의 아래쪽에 있는 Assets를 누른다. 아래와 같은 Assets 목록 중에 x86_64가 들어가고 .zip로 끝나는 파일을 눌러서 다운로드 받는다. 다운로드 받은 파일은 압축을 풀고.. 2023. 2. 13.
[C] 구조체 정리 1.구조체를 왜 사용할까? (사용자 지정 자료형) C언어에서 구조체가 왜 필요한 지 알기 위해서는 먼저 자료형이 무엇인지에 대해 알아볼 필요가 있습니다. 자료형은 일정 길이의 메모리에 저장된 정보를 해석하는 방법입니다. 메모리는 변수를 저장하기 위한 하드웨어이죠. 단순히 생각하면 메모리에는 숫자 밖에 들어있지 않지만 자료형에 따라 정수가 되기도 하고 실수가 되기도 하고 심지어는 문자가 되기도 합니다. 같은 숫자를 두고 해석하는 방법에 따라 문자가 되기도 하고 숫자가 되기도 합니다. 더도 덜도 아니고 그냥 그렇게 하기로 약속한 것입니다. 아스키 코드에서 숫자 65가 꼭 문자 'A'일 필요는 없으니까 말이죠. 자료형을 그릇에 비유하기도 합니다. 밥 그릇에 밥을 담고 국 그릇에는 국을 담는 것처럼 C언어에서는.. 2019. 2. 4.