반응형
#if vs #ifdef 두 지시어의 차이는 무엇인가?
#if vs #ifdef 두 지시어의 차이
- #if: 만약 ~이라면?
- e.g. #if USING==ON
- 변수 USING에 들어가 있는 값이 중요하게 작용합니다.
- #ifdef: 만약 ~가 정의되어 있다면?
- e.g. #ifdef USING
- if defined의 약자로, 사전에 정의되어 있는지만 확인합니다.
#ifdef을 사용하는 경우? (feat. __DEBUG__, __TEST__, __REAL__)
보통 회사에서 개발서버, 테스트 서버, 운영서버를 따로 관리합니다.
테스트를 하기 위해 운영되고 있는 서버를 내릴 순 없으니까요.
대게로 소스를 동일하게 맞춰놓는데, 개발 서버에서만 동작해야하는 소스가 있을 것입니다.
이런 상황에 컴파일 기본 옵션으로 개발서버에는 __TEST__를 정의해놓고, 운영서버에는 __REAL__을 정의해놓으면?
실수로 개발에 있는 소스들이 운영으로 들어가는 것을 방지할 수 있습니다.
#ifdef에 두가지 조건을 확인하고 싶은 경우?
앞서 #ifdef은 #if defined의 약자로 사용한다고 했습니다.
#ifdef의 단점은 하나의 매크로가 정의되어 있는지만 확인할 수 있다는 단점이 있는데요.
여기서 두가지 조건을 확인하고 싶은 경우 다음 두가지 방법 중 한 방법을 사용할 수 있습니다.
#if defined LINUX || defined ANDROID
//...
#endif
#if defined(LINUX) || defined(ANDROID)
//...
#endif
참고
- [C/C++] #if, #ifdef, #elif, #else, #endif 전처리기 지시어 알아보기: https://jhnyang.tistory.com/299
- [C] OR 조건과 함께 #ifdef를 사용하는 방법은 무엇입니까?: http://daplus.net/c-or-%EC%A1%B0%EA%B1%B4%EA%B3%BC-%ED%95%A8%EA%BB%98-ifdef%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C/
반응형
'Study: Software(SW) > SW: Language' 카테고리의 다른 글
[C++] Modern C++ Programming Cookbook 정리 (0) | 2022.07.12 |
---|---|
[C++] 함수형 프로그래밍(feat. lambda function) (0) | 2022.07.06 |
[C++] 병행 컴퓨팅: 순차, 병렬, 병행의 차이 (0) | 2022.07.01 |
[C++] 객체지향 프로그래밍: special member function (feat. L-value, R-value, std::move) (0) | 2022.06.30 |
[C++] 객체지향 프로그래밍: Effective Modern C++ 정리 (0) | 2022.06.27 |