2007. 3. 2. 11:57

#define WORD 1

이것은 WORD를 1로 치환한다는 것입니다.
쉬운 예를 들자면 많일 원의 면적을 구하는 프로그램을 짤다고 했을 때
원주율 3.14가 계산에 필요하게 됩니다.

...

int r, s;                // r 은 원의 반지름 길이, s는 원의 넓이
r = 3;
s = 3.14 * r ^ 2;

...

위와 같이 되겠죠. 그런데 이때 원주율 3.14를 좀더 정확하게 3.141592로 바꿔야 한다면 위에는 3.14가 한번밖에 안쓰였지만 3.14를 약 100번정도 사용하였다면 그걸 일일이 다 바꾸는건 엄청난 노가다가 될것입니다.

이럴때

#define PI 3.14

라고 해두면

...

int r, s;                // r 은 원의 반지름 길이, s는 원의 넓이
r = 3;
s =PI * r ^ 2;

...

라는 코드가 만들어 지니까
#define PI 3.141592
라고만 바꾸면 끝이되죠

위의 경우에만 쓰라고 있는건 아니고
#define라는 건
어떤 숫자라든지 긴 정의를 짧게 또는 의미있는 단어로 바꾸어 주는겁니다.

#ifdef WORD
printf("Hello, ");
#endif

여기서 #ifdef WORD 라는 것은 'WORD란 단어가 define가 되어있다면' 이란 뜻입니다.
즉 WORD란 단어가 위에서 #define WORD 1으로 define되어 있으므로 참이 되고
그 다음줄 printf("Hello, ");가 실행되는 거죠

#endif 란 #ifdef 구문이 끝났음을 알리는 겁니다.

#ifndef WORD2 도 비슷합니다.
이것은 #ifdef와는 반대로 'WORD2란 단어가 define되어 있지 않다면'이란 뜻입니다.
즉 WORD2란 단어는 위에서 #define에 의해 define된 적이 없으므로 참이되고
그 다음줄 printf("world/n"); 가 실행이 됩니다.

#ifndef WORD
printf("HaHa\n");

위 에서는 #ifndef WORD에서 WORD는 이미 define되어 있으므로 거짓이 되서
그 다름줄인printf("HaHa\n"); 가 실행되지 않습니다.
즉 출력결과는 Hello world 가 됩니다.

'STUDY > C 언어' 카테고리의 다른 글

명령어 이해 - volatile  (0) 2007.03.09
명령어 이해 - for 문  (0) 2007.03.07
명령어 이해 - if / while / brake  (0) 2007.03.02
명령어 이해 - return  (1) 2007.03.02
전역변수 사용시 주의 할 점  (0) 2007.02.26
Posted by Paul Hwang