- 전처리지시자란 컴파일이 시작되기 전에 소스 코드를 처리하기 위한 명령어입니다. 전처리기는 이러한 지시자들을 해석해 조건부 컴파일, 매크로 치환, 파일 포함 등을 수행합니다.
- 전치리 과정에서 처리되는 문장은 #으로 시작합니다.
자주 사용되는 전처리 지시자
#inlude
#include <stdio.h> // 표준 라이브러리 포함
#include "myheader.h" // 사용자 정의 헤더 파일 포함
- 외부 헤더 파일을 프로그램에 포함합니다.
- 대표적인 헤더파일 stdio.h
- 표준 라이브러리 파일을 포함할 때는 < > 사용하고, 사용자 정의 파일은 " " 사용합니다.
- puts(), printf(), scanf(), putchar(), getchar() 등과 같은 입출력 함수가 정보에 정의됩니다
#define
#define PI 3.14 // 매크로 정의
#define SQUARE(x) ((x) * (x)) // 매크로 함수 정의
- 매크로를 정의할 때 사용합니다. 반복되는 상수나 코드를 간단하게 치환할 때 유용합니다
#undef
#undef PI // PI 매크로 정의 해제
- 이전에 정의한 매크로를 해제할 때 사용합니다
#ifdef / ifndef
#ifdef DEBUG
printf("디버그 모드입니다.\n");
#endif
#ifndef PI
#define PI 3.14
#endif
- 매크로가 정의되었는지 여부에 따라 조건부 컴파일을 수행합니다
#if / #elif / #else / #endif
#define VERSION 2
#if VERSION == 1
printf("버전 1입니다.\n");
#elif VERSION == 2
printf("버전 2입니다.\n");
#else
printf("알 수 없는 버전입니다.\n");
#endif
- 조건에 따라 코드 블록을 컴파일할지 결정합니다
#pragma
#pragma warning(disable : 4996) // 특정 경고 메시지 비활성화 (MSVC)
- 컴파일러에게 특정 동작을 지시합니다. 컴파일러마다 지원하는 #pragma 옵션이 다를 수 있습니다
#error
#if !defined(VERSION)
#error "VERSION이 정의되지 않았습니다."
#endif
- 전처리 단계에서 강제로 에러를 발생시킵니다
#line
#line 100 "example.c"
- 소스 코드의 행 번호를 변경하거나 파일 이름을 지정합니다(디버깅에 유용).
요약
- #include: 파일 포함
- #define: 매크로 정의
- #undef: 매크로 해제
- #ifdef / #ifndef: 조건부 컴파일
- #if / #elif / #else / #endif: 조건 처리
- #pragma: 컴파일러 지시
- #error: 에러 강제 발생
- #line: 행 번호 지정
출처: 챗GPT (https://gptonline.ai/ko/)
'프로그래밍 언어 > C언어' 카테고리의 다른 글
[C언어] 연산자(대입 연산자, 축약 대입 연산자, 증감 연산자) (4) | 2024.10.05 |
---|