전처리기와 매크로
#define, 조건부 컴파일, 헤더 가드. 매크로가 만드는 함정과 안전하게 쓰는 방법.
전처리기는 컴파일 전에 글자를 바꾸는 단계입니다. #include는 파일 내용을 그대로 붙이고, #define은 이름을 값으로 치환합니다.
매크로의 함정
#define SQ(x) x * x
SQ(a + 1) // a + 1 * a + 1 로 펼쳐짐
#define SQ(x) ((x) * (x)) // 괄호로 감싸기
인자를 두 번 쓰는 매크로에 i++를 넣으면 두 번 증가합니다. 계산이 들어가는 매크로는 static inline 함수로 바꾸는 것이 안전합니다.
조건부 컴파일
#ifdef DEBUG
log_printf("adc=%u\n", adc);
#endif
보드 버전이나 디버그 빌드에 따라 코드를 넣고 뺍니다. 남용하면 어떤 조합이 실제로 빌드되는지 알 수 없게 되니 설정 헤더 한 곳에 모읍니다.
헤더 가드
같은 헤더가 두 번 포함되어 정의가 겹치는 것을 막습니다.
#ifndef MOTOR_H
#define MOTOR_H
...
#endif
영상으로 이어 보기공부법과 진로 시리즈 15편2025 임베디드 프로그래밍 공부 순서 | 공부 방법 | 로드맵PROJECT COURSEC 문법을 실제 펌웨어 코드로 써 보고 싶다면밸런싱 로봇 하나를 요구사항, 회로와 PCB, 펌웨어, 앱까지 실무 순서대로 만드는 강의입니다. 10파트 165강.강의 살펴보기 →FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →