조건부 컴파일(Conditional Compilation)
Programming/C 2013. 2. 15. 03:31 |#if... #endif : 참이라면
: if 매크로는 '참'이냐 '거짓'이냐를 기준으로 동작.
#ifdef... #endif : 정의되었다면
:ifdef 매크로는 "정의되었느냐(참)", "정의되지 않았느냐(거짓)"를 기준으로 동작.
이 매크로는 정의되었느냐를 판단하기에 옆에 참 거짓을 의미하는 1과 0을 생략한다.
#ifndef...#endif : 정의되지 않았다면
※ #ifndef는 헤더파일의 중복포함을 막기 위해 주로 사용이 된다.
#if와 함께 사용할 수 있는 "defined" 연산자
: defined 연산자는 매크로 #if문의 구성에 활용할 수 있는 연산자이다. 이 연산자의 덕분으로 #if문에서도 매크로의 정의 유무를 확인할 수 있게 된다.
defined 연산자 덕분에 코드가 한결 간결해졌다.
#undef : 이전에 정의된 매크로를 무효화
매크로 DATE를 무효화시키고 있다. 무효화시킨다는 것은 전처리기의 기억에서 지우는 것을 의미한다. 그런데 앞서 매크로 DATE가 정의된 적이 없다. 하지만 이는 오류가 아니다.
#undef는 정의되지 않은 매크로의 무효화 명령에도 오류를 발생시키지 않기 때문이다. 따라서 정의 유무가 확실하지는 않지만, 무효화시켜야 할 매크로가 있다면 언제든지 #undef 명령문을 구성하면 된다.
※ 매크로의 무효화 과정 없이도 재정의는 가능하다. 그러나 경고메시지가 발생하므로 무효화 과정을 거치는 것을 권장.
'Programming > C' 카테고리의 다른 글
ftell함수를 이용한 파일 사이즈 알아내는 프로그램. (0) | 2013.02.15 |
---|---|
fread, fwrite 함수 (1) | 2013.02.15 |
#error, #pragma 및 #line (0) | 2013.02.15 |
매크로와 전처리기 (Preprocessor). (0) | 2013.02.15 |
실행파일이 만들어 지는 과정. (0) | 2013.02.15 |