C언어 전처리기 include와 define 사용법 예제

C언어 전처리기에는 #include#define이 있습니다. #include<stdio.h><string.h> 등의 헤더 파일을 불러올 때 사용합니다. #define은 상수값을 문자로 치환할 때 사용합니다.

C언어 전처리기

전처리기(Preprocessor)는 컴파일(코드를 기계어로 번역)의 한 과정으로 본문이 컴파일 되기 전에 실행되는 컴파일입니다.

#문자로 시작되며 세미콜론을 작성하지 않습니다. 전처리기의 대표적인 종류에는 #include#define이 있습니다.

#include

#include 전처리기는 원하는 헤더 파일을 해당 파일에 포함(include)시킬 때 사용합니다.

예를 들어 #include <stido.h> 전처리기는 printf(), scanf(), puts(), gets() 등의 라이브러리 함수 파일을 포함시킵니다.

#include <stdio.h>
void main()
{
	printf("Hello World!"); //헤더파일에 <stdio.h>가 있어야 printf () 함수 사용 가능
}

#include <string.h> 전처리기는 strcpy(), strlen() 등의 문자열 처리 함수 파일을 포함시킵니다.

#include <stdio.h>
#include <string.h>

int main()
{
	char x[30] = "vnlsdfjksdfljsdklf";

	int y;

	y = strlen(x); // strlen() 함수는 <string.h>가 있어야 작동

	printf("문자열 x의 문자 개수는 %d 입니다.", y);
}

#define 매크로 상수

#define은 상수(숫자, 기호, 문자열 등)나 심지어 함수까지 특정 문자로 치환할 수 있는 기능입니다.

#define 대체할문자 대체될상수

예를 들어 printf() 함수를 YA 라는 단어로 바꾸면 앞으로는 YA를 사용해도 똑같은 기능이 발현됩니다.

#include <stdio.h>
#define YA printf


void main()
{
	YA("printf가 YA로 치환되었습니다.");
}

숫자를 예로 든다면, 자신이 작성하는 코드에서 숫자 100이 자주 사용된다면, 숫자 100을 특정 문자로 지정할 수 있습니다.

#include <stdio.h>
#define Hundred 100


int main()
{
	int x = 300;

	printf("%d \n", x + Hundred);
	printf("%d \n", x - Hundred);
	printf("%d \n", x * Hundred);
	printf("%d \n", x / Hundred);
}

이럴 경우 단순히 상수 100을 적는 것 보다 가독성이 증가합니다. 가장 중요한 점은 문자를 자유롭게 바꿀 수 있다는 점입니다.

#define Hundred 100과 그냥 변수로 int Hundered = 100;의 지정이 어떤 차이가 있는지 의문이 들 수 있습니다.

이것은 상수와 변수의 차이가 무엇이냐는 질문과 동일합니다.

#define Hundred 100에서 Hundred는 상수이므로 Hundred = 200;과 같은 새로운 변수값을 삽입할 수 없습니다.

하지만 int Hundred 100;에서 Hundred는 변수이므로 Hundred = 200;과 같은 새로운 변수값을 계속 삽입할 수 있습니다.

#define과 같은 상수값의 설정은 해당 값이 바뀌면 안되는 시점에 사용하는 목적이라 볼 수 있습니다.

문자열도 상수값으로 지정할 수 있습니다.

#include <stdio.h>
#define  RESEARCH "함수 계산의 결과를 절삭해서 출력합니다. \n"


void main()
{
	printf(RESEARCH);
	printf(RESEARCH);
	printf(RESEARCH);
}

결과

함수 계산의 결과를 절삭해서 출력합니다.
함수 계산의 결과를 절삭해서 출력합니다.
함수 계산의 결과를 절삭해서 출력합니다.

상수명은 대문자로 작성합니다.