[C/C++ Tip] 2. #define의 목적
·
Language/C언어
#define은 왜 사용하는 걸까? 단순히 상수 처리하기 위해 define을 사용하는 것일까? 이를 알기 위해선 소스 코드의 변환 과정을 알 필요가 있다. ​ Build의 순서는 아래와 같다. exe 파일 생성 : 소스코드 -> 전처리 -> 컴파일 -> 링크 -> 실행 mcu 헥사 파일 생성 : 소스코드 -> 전처리 -> 컴파일 -> 어셈블리어 변환 -> 헥사 파일 생성 -> MCU 다운로드 ​ C언어를 처음 공부할 때, #define을 사용하지 않으면 전처리 과정을 거치지 않는다고 생각한 적이 있다. #으로 시작하는 문장은 전부 전처리기 지시자임에도 #include는 전처리기라고 생각하지 않았다. 항상 C언어를 실습할 때, 의무적으로 #inlcude 를 작성한 폐해이다. ​ 전처리란 무엇인가? 컴파일 ..
[C/C++ Tip] 1. 개발하기 전, typedef 별명 부여.
·
Language/C언어
#define은 왜 사용하는 걸까?단순히 상수 처리하기 위해 define을 사용하는 것일까? 이를 알기 위해선 소스 코드의 변환 과정을 알 필요가 있다. ​ ⭐1. Build 순서Build의 순서는 아래와 같다. exe 파일 생성 : 소스코드 -> 전처리 -> 컴파일 -> 링크 -> 실행 mcu 헥사 파일 생성 : 소스코드 -> 전처리 -> 컴파일 -> 어셈블리어 변환 -> 헥사 파일 생성 -> MCU 다운로드 ​ C언어를 처음 공부할 때, #define을 사용하지 않으면 전처리 과정을 거치지 않는다고 생각한 적이 있다. #으로 시작하는 문장은 전부 전처리기 지시자임에도 #include는 전처리기라고 생각하지 않았다. 항상 C언어를 실습할 때, 의무적으로 #inlcude 를 작성한 폐해이다. ​⭐2. 전..
[BLE 실내 측위 프로젝트] 10. 삼변측량 정리 및 구현
·
Flutter/BLE Indoor positioning system
해당 글은 아래 posting으로 이전함 https://m.blog.naver.com/younjung1996/223364514538 [BLE 실내 측위 프로젝트] Indoor Positioning System 포스팅 리스트 BLE 실내 측위 프로젝트 1. Flutter_blue 설정 (feat.안드로이드12 권한 이슈) : https://m.blog.naver... blog.naver.com BLE 실내 측위 프로젝트 1. Flutter_blue 설정 (feat.안드로이드12 권한 이슈) : https://m.blog.naver.com/younjung1996/223334840714 2. Bluetooth Low Energy(BLE) 통신 스케줄, 안드로이드 함께 이해하기 : https://m.blog.n..
[C] Call by Value VS Call by Reference
·
C, C++
Call by Value 와 Call by Reference 의 차이에 대해 이야기합니다. 아래 하나의 예제를 보겠습니다. #include void call_by_value(int test) { test = test + 10; printf("call by value address %p\n", &test); } int call_by_value_return(int test) { test = test + 10; printf("call by value address %p\n", &test); return test; } void call_by_reference(int *test) { printf("call by reference %p\n", test); *test = *test+1; } int main() { i..
[C] UNION 공용체와 Struct 구조체를 이용해 간단한 패킷 만들기
·
C, C++
안녕하세요. 오늘은 UNION과 STRUCT에 대해 이야기 하겠습니다. coding-yoon.tistory.com/119 [C] 구조체 포인터 접근과 최적화 요즘 기본기가 중요함을 느끼고 C를 공부하고 있습니다. 1. 구조체 단순히접근 #include //Struct packet 선언 typedef struct packet { int data0; int data1; int data2; }Packet; int main() { Packet p; //Str.. coding-yoon.tistory.com 구조체에 대한 이야기는 위에 작성했지만, 저보다 훨씬 자세히 적은 블로그 분들이 많기 때문에 따로 찾아보시길 바랍니다. UNION의 구조를 먼저 알아보겠습니다. UNION은 가장 사이즈가 큰 변수와 메모리를 공..
[C] 구조체 포인터 접근과 최적화
·
C, C++
요즘 기본기가 중요함을 느끼고 C를 공부하고 있습니다. 1. 구조체 단순히접근 #include //Struct packet 선언 typedef struct packet { int data0; int data1; int data2; }Packet; int main() { Packet p; //Struct Packet 정의 p.data0 = 0; p.data1 = 1; p.data2 = 2; printf("%d %d %d ", p.data0, p.data1, p.data2); return 0; } 2. 구조체 포인터로 접근 #include // Struct packet 선언 typedef struct packet { int data0; int data1; int data2; }Packet; int main(..
[C]BMP구조체 : #pragma pack(push, 1) 사용하지 않고 정렬하기
·
C, C++
안녕하세요. 오랜만에 C언어에 대해 글을 써봅니다. 여러분들 BMP를 불러올 때 어떻게 하시나요? https://dojang.io/mod/page/view.php?id=703 C 언어 코딩 도장: 81.2 비트맵 구조체 작성하기 비트맵 파일의 구조를 알아보았으니 이제 비트맵 구조체를 작성합니다. 이때 주의할 점은 반드시 구조체를 1바이트 크기로 정렬해야 한다는 점입니다. 즉, 비트맵 파일에서 각 정보는 위치와 크기가 정확하게 정해져 있으므로 반드시 구조체의 크기와 형태 그대로 읽어야 합니다. #pragma pack(push, 1) // 구조체를 1바이트 크기로 정렬 typedef struct _BITMAPFILEHEADER // BMP 비트맵 파일 헤더 구조체 { unsigned dojang.io 아마 ..
[C]BMP RGB 값 조절
·
C, C++
#include #include #include #include #pragma warning(disable:4996) #define _CRT_SECURE_NO_WARNINGS typedef uint8_t BYTE; typedef uint32_t DWORD; typedef int32_t LONG; typedef uint16_t WORD; /*********************************************************STRUCTS***********************************************************/ #pragma pack(push, 1) typedef struct tagBITMAPFILEHEADER { WORD bfType; //specifies..
2차원 배열 동적할당하기 3 편
·
C, C++
안녕하세요 2차원 배열 동적할당하기 3편입니다. 2편에서는 1차 배열을 2차 배열처럼 표현하였는데 단점으로 배열 사용할 때 인덱스가 복잡하여 사용하기 어려웠습니다. 이제는 1편의 2차 배열을 조금 정리하여 이쁘게 표현해보도록 하겠습니다. int** mat; mat = (int**)malloc(sizeof(int*) * column); mat[0] = (int*)malloc(sizeof(int) * row *column); for (int i = 1; i
18진수
'c' 태그의 글 목록