without haste but without rest

[C] 매크로 본문

ProgrammingLanguage/C

[C] 매크로

JinungKim 2020. 2. 29. 18:26
Reference - C언어 코딩도장

1. 매크로

 

C언어는 컴파일러에서 전처리기(preprocessor)를 제공한다. 보통 전처리기는 반복되는 작업을 미리 정의할 때 사용한다. 매크로는 전처리기에서 #define 으로 정의할 수 있다.

 


2. 매크로 정의하기 

 

아래 코드에서 #define 지시자는 ARRAY_SIZE 에 정수 10을 할당했다. 이 코드의 장점은 배열의 크기를 수정할 경우, 지시자 코드 한줄을 수정하는 것 만으로도 바꾸고자 하는 배열의 크기를 한번에 처리할 수 있다는 것이다. 이런 문제를 해결하기 위해서 매크로를 사용한다. 

 

#include <stdio.h>
#define ARRAY_SIZE 10

int main() {
	char s1[ARRAY_SIZE];

	for (int i = 0; i < ARRAY_SIZE; i++) {
		s1[i] = 97 + i;
	}

	for (int i = 0; i < ARRAY_SIZE; i++) {
		printf("%c\n", s1[i]);
	}

	return 0;
}

 


3. 매크로 해제하기

 

#undef 로 매크로를 해제할 수 있다.

#include <stdio.h>
#define ARRAY_SIZE 10

int main() {
	printf("%d\n", ARRAY_SIZE);

#undef ARRAY_SIZE
#define ARRAY_SIZE 20

	printf("%d\n", ARRAY_SIZE);

	return 0;
}

 


4. 함수 모양의 매크로 

#include <stdio.h>
#define PRINT_NUM(x) printf("%d\n", x)

int main() {
	PRINT_NUM(10);
	PRINT_NUM(20);

	return 0;
}

 


 

'ProgrammingLanguage > C' 카테고리의 다른 글

[C] srand(time(NULL)) 의 의미  (1) 2020.04.09
[C] 파일 읽고 쓰기  (0) 2020.02.29
[C] 열거형  (0) 2020.02.29
[C] 공용체  (0) 2020.02.29
[C] 구조체  (0) 2020.02.27
Comments