코드를 짜서 실행을 하면 컴파일러보다 먼저 수행되도록 하는 부분이다. #include가 가장 흔히 보는 선행처리기로 앞부분에 #을 통해 표시한다. 그리고 뒤에는 ; 가 없는게 특징이다.
종류는 크게 3가지가 있는데 앞서 말한 #include, 상수나 매크로를 설정하는 #define, #if #endif 등이 있다.
#include
먼저 #include는 해더파일과 같이 이 소스에 다른 파일에 포함하는 방식이다.
#include <stdio.h> --> C컴파일러에서 검색
#include "hello.h" --> 디렉토리에서 검색
#define
다음으로 #defiine은 매크로 상수, 함수등을 정의한다.
매크로 상수
#define PI 3.141592
이렇게 하면 다음부터 PI는 3.141592로 사용한다.
매크로 함수
매크로 함수를 통해 보통 함수호출보다 빠르게 함수의 작업을 수행하도록 매크로를 만들 수 있다. 가령 자주 쓰는 printf의 매크로 함수를 만들어 본다면
#define P(...) printf(__VA_ARGS__);
이렇게 정의하면 다음부터는 printf대신 P를 통해 printf와 같은 작업을 수행할 수 있다.
그리고 매크로 함수를 만들 때 주의할 점이 있는데 아래처럼 매크로 함수를 정의하고
#define square(x) x * x
사용할 때 square(3+1)을 사용하면 x라는 글자가 변경 매칭되어 변경되기 때문에 square(3+1) 매크로 함수가 3 + 1 * 3 + 1 식으로 지정된다. 그러면 본래 원하는 값이 16인데 위의 계산값이 7이 나오게 된다.
그러므로
#define square(x) (x) * (x)
이렇게 사용하는게 안정적이다.
#if #endif
이 선행처리기는 보통 우리가 사용하는 if문가 같은 방식인데 컴파일하기전에 먼저 수행되는 if문이라고 보면된다. #if의 조건에 부합하지 않으면 코드를 통해 컴파일하기 전에 아예 해당 코드를 수행하지 않게 된다.
#if 조건
코드
#else
코드
#endif
만약 우리가 코드를 작성하여 런칭을 할 때 한글판과 영문판이 필요하다 이런식이면 위의 방법을 통해 하나의 코드에서 두가지 출력을 만들 수 있다.
이런식의 코드를 통해 NATION만 바꿔주면 바로 영문판과 한글판의 실행이 가능하다.
#pragam
컴파일러에게 직접 명령을 내리는 지시자이다.
#pragma region Name
코드
#pragma endregion
지정된 지역을 함수처럼 접고 열기가 가능하게 되어 가독성이 편해진다.
이렇게 접았다가 폈다가 가능
'공부 > C' 카테고리의 다른 글
글자색 설정하기 (1) | 2017.08.27 |
---|---|
for문 증감문에 전위연산자와 후위연산자의 차이 (0) | 2017.07.27 |
for / while (0) | 2017.07.20 |
#define / const (0) | 2017.07.19 |
자료형, 서식문자 (0) | 2017.07.18 |