본문 바로가기

Stupid Computer/2. C 언어

[C/C++] #ifdef 사용법 ! ifdef, endif 사용법 !! 모드 전환 !

개발을 하다가, A모드와 B모드로 구분을 하고 싶을 때가 있습니다. 

예를 들어, 웹 상에서만 개발 할 때, 디바이스에 올려서 테스트 할 때 라던지,


input을 5로 넣을때, 10으로 넣을때 뭐 이런식의 차이가 있을 때 있습니다. 


물론 이때 기본적인 코드들은 전혀 건드리지 않고, 모드가 달라도 같은 구조를 띄고 있을때 사용하는 게 #ifdef 입니다. 



#ifdef의 사용법은 일반적인 if문과 동일하다고 생각하시면 됩니다.


C에서의 if문의 경우 if ~else~형식으로 쓰는데 #ifdef도 마찬가지입니다.


#ifdef

 

#ifdef  identifier

~~

#else /* 필요할 경우 */ 

~~

#endif


형식으로 됩니다.

 

identifier는 #define으로 정의된것을 사용하고, 정의 되지 않았으면 당연히 #else문뒤의 것이 실행됩니다. 


identifier는 코드 맨위에서 정의해도 되고 중간에 정의해도 되지만, 가독성을 위해 맨위에 정의를 합시다 !!


예를 들면

 

#define IQIsZero


....

 

#ifdef IQIsZero


#define MyMessage printf("바보")

#else

#define MyMessage printf("멍충이")

#endif

 

void main()

{

    MyMessage;

}

 

위 문장에서 #define IQIsZero가 있으면 출력으로 "바보"이 #define IQIsZero문장을 없애면 "멍충이"가 출력됩니다.

 


어렵지 않은 구조 이지만, 잘만 사용하면 엄청 편리해 질 수 있다.