C언어에서 #ifdef와 #endef 의 뜻이 뭔가요?
- Language/C
- 2009. 11. 3.
C/C++ 에서 # 기호가 첫 문자로 오면 컴파일러 지시자라고 합니다.
#include, #define, #if ,#ifdef .... 등이 있습니다.
#ifdef 는 #define으로 정의된 것이 있는지 판단합니다.
예를 들어 아래와 같은 소스가 있다고 하면...
----------------------------------------------
#include "config.h"
void MyDeleteFile(char * szFileName )
{
#ifdef _sun
_unlink(szFileNAme);
#endif
#ifdef _WIN32
DeleteFile(szFileName);
#endif
}
-----------------------------------------------
위 코드는 #define _sun 이 있으면 _unlink()를 사용하고,
#define _WIN32가 있으면 DeleteFile()을 사용해서 파일을 지우는 함수 입니다.
OS나, 컴파일 목적에 따라서 #define으로 정의 된 값이 있을때
해당 부분만 컴파일 되도록 소스를 만들수 있게 됩니다.
예로
VC++에서는 디버그 모드로 컴파일시에는 _DEBUG를 #define 해 둡니다.
반대로 릴리즈 모드 컴파일 시에는 _DEBUG를 #define 하지 않습니다.
-----------------------------------------------------
int MyMul(int x, int y)
{
#ifdef _DEBUG
printf("x=%d, Y=%d", x,y);
#endif
return (x * Y) ;
}
--------------------------------------------------------
위와 같이 코딩하면 디버그로 생성된 실행파일 에서는 x,y 값을 출력하고
릴리즈로 컴파일 된 실행 파일에서는 printf() 문이 컴파일 되지 않아 x,y 값이
출력되지 않습니다.
'Language > C' 카테고리의 다른 글
[C] C언어 정리되어 있는 프로그램 (0) | 2010.01.23 |
---|---|
숫자를 문자열로 변환! (0) | 2009.12.09 |
C언어] 10진수 2진수 진법 변환, 이진수 출력 함수: Decimal to Binary (base-2) (0) | 2008.10.12 |
memmove() (0) | 2008.10.07 |
[일반]#pragma once 와 #pragma comment() (0) | 2008.07.08 |