프프 전처리기

왜 전처리기라고 하냐 ? 컴파일 전에 미리 처리가 되어서.

전처리기

  • 컴파일하기에 앞서서 소스 파일을 처리하는 컴파일러의 한 부분

    지시어 의미 #define 매크로 정의 #include 파일 포함 #undef 매크로 정의 해제 #if 조건이 참일 경우 #else 조건이 거짓일 경우 #endif 조건 처리 문장 종료 #ifdef 매크로가 정의되어 있는 경우 #ifndef 매크로가 정의되어 있지 않은 경우 #line 행번호 출력 #pragma 시스템에 따라 의미가 다름

단순 매크로

매크로의 형태가 간단한 경우 -> #define 간단한 치환 기능.

  • 프로그램의 가독성을 높인다.
  • 상수의 변경이 용이하다.

예 : 산술, 수식도 전처리가 가능하다. 함수형태도 가능하다 전처리.

함수 매크로

매크로가 함수처럼 매개 변수를 가지는 것 #define 매크로(매개변수1, 매개변수 2,...) 치환텍스트

대체하라는 거지 계산과는 상관없는 이야기.

함수 매크로에서는 매개 변수를 괄호로 둘러 싸주는 것이 좋다.

컴파일러 -> 실행순서가 상관이 있다. (++x)*(++x) 메모리에 저장해놨다가 언제 불러오느냐에 따라서 결과 값이 달라지는 경우 이렇게 쓰지 말라. 이렇게 쓰면 안된다. 읽는 사람이 불분명하게 이해할 수 있는 요소는 쓰면 안된다.

읽어보면서 당연하게 따라갈 수 있는 방식으로 작성하는 게 좋다.

함수 매크로 장단점

  • 함수 호출 단계가 필요 없어 실행 속도가 빠르다.
  • 소스 코드의 길이가 길어진다.
  • 간단한 기능은 매크로를 사용

내장 매크로

__DATE__ 현재의 날짜 __TIME__ 현재의 시간 __LINE__ 현재의 라인 번호 __FILE__ 소스 파일 이름 치환

함수 에러 printf("컴파일 날짜=%s\n", __DATE__); – printf("치명적 에러 발생 파일 이름=%s 라인 번호= %d\n", __FILE__, __LINE__) 이런 식으로 활용


참고자료

프로그래밍 프로젝트

Gunny 더블링크드 리스트 구현

C언어로 쉽게 풀어쓴 자료 구조 천인국(저) 2009년

0%