C언어에서 #ifdef와 #endef 의 뜻이 뭔가요?

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 값이
출력되지 않습니다.

댓글

Designed by JB FACTORY