반응형
#define
1. 상수로 치환
2. 매크로의 역할 ex) #define PLUS(x) ((x) = (x) + (x))
#if
if와 같은 역할
ex>
#define A 1
#if A
//source
#else
//source2
#endif
A가 1로 치환되었기에 #if의 조건검사식에서 참이되어서 source가 컴파일된다. 이 때 source2는 컴파일 되지 않는다.
A를 0으로 해주면 source는 컴파일 되지 않는다. 이 때 source2는 컴파일 된다.
#ifdef
#ifndef
#ifdef : 어떠한 값이 define되어 있는지 여부 확인
ex>
#define A 1
#ifdef A
//source
#endif
A가 define되어있기 때문에 source는 컴파일된다.
반대로
#ifndef : 어떠한 값이 define되어 있는지 여부 확인
ex>
#ifndef FILENAME_H
#define FILENAME_H
//source
#endif
FILENAME_H가 정의되어 있지 않다면 source를 컴파일 한다.
위 코드는 헤더 파일이 중복되어 선언되지 않도록 할 때 자주 사용되는 방법이다.
defined()
여러개가 define되어 있는지 여부 확인.
#undef
define된 것을 해제한다.
ex>
#define LEVEL 1
le1 = LEVEL
#undef LEVEL
#define LEVEL 2
le2 = LEVEL
원래 define된 것을 다시 define하는 것은 컴파일 에러를 일으킨다. 고로 이때 #undef가 사용된다.
#error
전처리기가 해당 코드를 실행하게 되면 에러메시지를 출력시키고 컴파일 작업을 하지 않도록 한다.
ex>
#if !defined(__cplusplus)
#error C++ compiler required
#endif
#line
#line 뒤에 나오는 source 줄번호를 지정된 상수 값에서 시작하여 번호가 매겨지게 한다.
ex>
#line 500
//source
source가 500번째 라인에서 시작하게 된다.
1. 상수로 치환
2. 매크로의 역할 ex) #define PLUS(x) ((x) = (x) + (x))
#if
if와 같은 역할
ex>
#define A 1
#if A
//source
#else
//source2
#endif
A가 1로 치환되었기에 #if의 조건검사식에서 참이되어서 source가 컴파일된다. 이 때 source2는 컴파일 되지 않는다.
A를 0으로 해주면 source는 컴파일 되지 않는다. 이 때 source2는 컴파일 된다.
#ifdef
#ifndef
#ifdef : 어떠한 값이 define되어 있는지 여부 확인
ex>
#define A 1
#ifdef A
//source
#endif
A가 define되어있기 때문에 source는 컴파일된다.
반대로
#ifndef : 어떠한 값이 define되어 있는지 여부 확인
ex>
#ifndef FILENAME_H
#define FILENAME_H
//source
#endif
FILENAME_H가 정의되어 있지 않다면 source를 컴파일 한다.
위 코드는 헤더 파일이 중복되어 선언되지 않도록 할 때 자주 사용되는 방법이다.
defined()
여러개가 define되어 있는지 여부 확인.
ex>
#if defined(DEBUG1) || defined(DEBUG2) || defined(DEBUG3)
#define GEN_DEBUG(x) {printf x;}
#else
#define GEN_DEBUG(x)
#endif
위 코드는 디버깅에 많이 쓰이는 방식이다.
#undef
define된 것을 해제한다.
ex>
#define LEVEL 1
le1 = LEVEL
#undef LEVEL
#define LEVEL 2
le2 = LEVEL
원래 define된 것을 다시 define하는 것은 컴파일 에러를 일으킨다. 고로 이때 #undef가 사용된다.
#error
전처리기가 해당 코드를 실행하게 되면 에러메시지를 출력시키고 컴파일 작업을 하지 않도록 한다.
ex>
#if !defined(__cplusplus)
#error C++ compiler required
#endif
#line
#line 뒤에 나오는 source 줄번호를 지정된 상수 값에서 시작하여 번호가 매겨지게 한다.
ex>
#line 500
//source
source가 500번째 라인에서 시작하게 된다.
반응형
'Programming > C_C++' 카테고리의 다른 글
C++에서의 파일 입출력 ** (0) | 2011.08.18 |
---|---|
전처리기 활용 ** (0) | 2011.08.17 |
ture, false (0) | 2011.07.18 |
객체 초기화 (0) | 2011.07.17 |
reference (참조자) (0) | 2011.07.14 |