posted by 구로보루 2017. 7. 19. 22:07

 코드를 짜서 실행을 하면 컴파일러보다 먼저 수행되도록 하는 부분이다. #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