#ifdef once // 첫 번째 말고 두번째부터 실행 #endif #ifndef once #define once // 여러번 실행되어도 한번만 실행 #endif
프로그램을 작성하다 보면 필요한 함수들이 있고 보통 #include<>를 통해 필요한 해더파일을 추가한다. 만약 같은 해더파일을 두번 가져오면 어떻게 될까?? 오류 없이 잘 동작된다.
같은 이름으로 #define만 하더라도 오류가 나는데 어떻게 된 것일까?? 이는 조건부 컴파일 #ifdef과 #ifndef을 이용해 구현할 수 있다.
if()문과 비슷하게 위에 있는 예제를 예로 든다면 '#ifdef once'는 once라는 놈이 정의되어 있다면 이라는 뜻이다 #ifndef은 반대로 정의되어 있지 않다면 이라는 뜻이다.
비쥬얼베이직과 비슷하게 if문의 끝점이 괄호가 아니라 #endif로 해주어야 한다. 한번만 실행되는 영역에 필요한 것들을 넣어주면 아무리 여러번 #include<>를 하더라도 오류 없이 동작할 수 있다.