DrawingProcess
드프 DrawingProcess
DrawingProcess
전체 방문자
오늘
어제
«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 분류 전체보기 (964)
    • Profile & Branding (22)
      • Career (15)
    • IT Trends (254)
      • Conference, Faire (Experien.. (31)
      • News (187)
      • Youtube (19)
      • TED (8)
      • Web Page (2)
      • IT: Etc... (6)
    • Contents (97)
      • Book (66)
      • Lecture (31)
    • Project Process (94)
      • Ideation (0)
      • Study Report (34)
      • Challenge & Award (22)
      • 1Day1Process (5)
      • Making (5)
      • KRC-FTC (Team TC(5031, 5048.. (10)
      • GCP (GlobalCitizenProject) (15)
    • Study: ComputerScience(CS) (72)
      • CS: Basic (9)
      • CS: Database(SQL) (5)
      • CS: Network (14)
      • CS: OperatingSystem (3)
      • CS: Linux (39)
      • CS: Etc... (2)
    • Study: Software(SW) (95)
      • SW: Language (29)
      • SW: Algorithms (1)
      • SW: DataStructure & DesignP.. (1)
      • SW: Opensource (15)
      • SW: Error Bug Fix (43)
      • SW: Etc... (6)
    • Study: Artificial Intellige.. (149)
      • AI: Research (1)
      • AI: 2D Vision(Det, Seg, Tra.. (35)
      • AI: 3D Vision (70)
      • AI: MultiModal (3)
      • AI: SLAM (0)
      • AI: Light Weight(LW) (3)
      • AI: Data Pipeline (7)
      • AI: Machine Learning(ML) (1)
    • Study: Robotics(Robot) (33)
      • Robot: ROS(Robot Operating .. (9)
      • Robot: Positioning (8)
      • Robot: Planning & Control (7)
    • Study: DeveloperTools(DevTo.. (83)
      • DevTool: Git (12)
      • DevTool: CMake (13)
      • DevTool: NoSQL(Elastic, Mon.. (25)
      • DevTool: Container (17)
      • DevTool: IDE (11)
      • DevTool: CloudComputing (4)
    • 인생을 살면서 (64)
      • 나의 취미들 (7)
      • 나의 생각들 (42)
      • 여행을 떠나자~ (10)
      • 분기별 회고 (5)

개발자 명언

“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”

- Jef Raskin

맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도

인기 글

최근 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
DrawingProcess

드프 DrawingProcess

Study: Software(SW)/SW: Language

[C++] 조건부 컴파일 매크로(전처리기 지시어): Header Guard (#if, #ifdef, #elif, #else, #endif...)

2022. 7. 4. 17:14
반응형

#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
    'Study: Software(SW)/SW: Language' 카테고리의 다른 글
    • [C++] Modern C++ Programming Cookbook 정리
    • [C++] 함수형 프로그래밍(feat. lambda function)
    • [C++] 병행 컴퓨팅: 순차, 병렬, 병행의 차이
    • [C++] 객체지향 프로그래밍: special member function (feat. L-value, R-value, std::move)
    DrawingProcess
    DrawingProcess
    과정을 그리자!

    티스토리툴바