태그: 전처리기
6편
-
C 언어 시리즈 #08 — 전처리기 8단계·매크로·_Pragma·번역 단위 경계
ISO C 번역 8단계 중 전처리가 맡는 부분, #include 텍스트 합성과 번역 단위 경계, 함수형 매크로의 다중 평가·#/## 함정, _Pragma·include guard·조건부 컴파일로 중복 정의를 막고 헤더 의존 순서를 안정화하는 방법을 정리합니다.
-
X-Macro로 중복 없애기: enum↔문자열 매핑, 에러 코드 표, 상태 머신, 커맨드 테이블
enum과 문자열 배열을 따로 정의하다 한쪽만 고쳐 어긋나는 문제를 X-Macro로 한 곳에서 관리하는 방법을 보여줍니다. enum↔문자열 양방향 변환과 개수 자동 계산, 에러 코드·HTTP 상태 표, 상태 머신 전이 테이블, CLI 커맨드 디스패치 예제를 다룹니다.
-
C++ 전처리기 제대로 쓰기: #define과 #ifdef 실전 패턴
redefinition 에러, Windows와 Linux API 분기, 디버그 빌드 전용 로그, __FILE__과 __LINE__을 넣은 assert처럼 전처리기가 필요한 상황을 예제로 풀고, 가변 인자 매크로와 확장 순서, 인자에 쉼표가 든 매크로의 함정을 설명합니다.
-
C++ 매크로 고급 기법: X-Macro, 문자열화(#)·토큰 붙이기(##), 가변 인자 매크로
C++ 전처리기 매크로의 고급 기법을 정리합니다. X-Macro 패턴, 문자열화(#)·토큰 붙이기(##), 조건부 컴파일, 그리고 괄호 누락·부작용·세미콜론 문제처럼 매크로가 constexpr/템플릿보다 위험한 이유를 다룹니다.
-
#ifndef vs #pragma once: C++ 헤더 가드의 동작 원리와 선택 기준
#ifndef 가드와 #pragma once가 전처리기에서 각각 어떻게 중복 포함을 막는지 비교하고, 가드 매크로 이름 충돌, 같은 파일을 가리키는 여러 경로에서 pragma once가 헷갈리는 경우, 순환 포함 문제와 C++20 모듈과의 관계를 설명합니다.
-
C++ 컴파일 과정 4단계: 전처리·컴파일·어셈블·링킹과 undefined reference가 나는 이유
소스 파일이 전처리, 컴파일, 어셈블, 링킹을 거쳐 실행 파일이 되는 과정을 단계별 명령으로 확인하고, undefined reference가 링크 순서나 이름 맹글링 때문에 생기는 이유, 정적 라이브러리와 동적 라이브러리의 차이, 수정이 빌드에 반영되지 않는 문제를 다룹니다.