관리 메뉴

Leo's Garage

Preprocessor (전처리기) 본문

Embedded/Embedded SW 이야기

Preprocessor (전처리기)

LeoBehindK 2020. 1. 17. 23:25
728x90
반응형

앞의 포스팅에서는 Compile에 대한 이야기를 해보았다.

이번 시간에는 Proprocessor, 즉 전처리기에 대한 이야기를 해보고자 한다.  우선 전처리기가 실행되는 시점부터 언급하고 넘어가겠다. 전처리기는 Compiler가 *.c 파일을 *.s 파일로 바꾸기 전에 C processor 와 Lint processor라는 것들이 Syntax를 정리하는 과정을 거친다.

예를 들어 MACRO나 define으로 선언된 것들을 실제 Compiler가 Compile을 하기 전에 정리해준다고 생각하면 편하다.


#define and &

a = a and b

 만약에 위의 같은 코드가 있다고 해보자, 이 코드를 전처리기에 돌리게 되면


a = a & b

위와 같은 형태로 변하게 된다.

 

그럼 이렇게 바꿀 수 있는 녀석들은 뭐가 있을까? 예를 들어 #define #if #ifdef 등등이 있을 수 있다.

자 그럼 전처리기를 사용하면 어떤 점이 좋을까를 생각해보면, 아래와 같은 예제를 생각해보자


#ifdef Resolver 

inputResolverSig();
arcTanAngle();
angle = resultAngle();

#endif

#ifndef Resolver

checkEncoder();

#endif

위와 같은 간단한 코드를 살펴보면, #ifdef를 통해서 Resolver라는 값이 0이 아니면 위 쪽 코드 블럭이 실행될 수 있고 아니라면 아래쪽 코드가 실행될 수 있다.

보통 임베디드 시스템에서 하나의 동작을 위해 여러가지 인터페이스를 만드는 경우 혹은 타겟 아이템에 따라 기능을 따로 구현해야할 때 위와 같이 특정 Flag로 코드를 제어할 수 있게 한다.

 


#define Kp 10

void ATO(Kp)
{
	AngleLpf(Kp);
}

위와 같이 Tunning이 필요한 값을 정의할 때, #define을 통해 정의하고 이를 관리하는 경우가 있다,

 

이러한 전처리문이 많이 들어가 있는 코드가 굉장히 많아지게 되면 실제로 코드 분석하기가 상당히 까다로울 수 있다. 이 경우에 전처리기 명령을 통해서 코드를 한 번 처리하면 분석하는데 매우 용이할 수 있다. 

 

 

앱솔루트 유기농 궁 분유 3단계, 800g, 3개

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

728x90
반응형

'Embedded > Embedded SW 이야기' 카테고리의 다른 글

Compile 두번째 이야기  (0) 2020.01.12
Compile  (0) 2020.01.07
Embedded SW Design  (0) 2020.01.06
Comments