본문 바로가기
TIL/따배씨

전처리기와 라이브러리(2021-01-31~2021-02-01)

by Dev_Dank 2021. 1. 31.

16.1 전처리기가 해주는 일들

컴파일러 이전에 처리를 해주는게 전처리기다.

16.3 #define 매크로

-전처리 지시자는 해쉬(#)기호로 시작된다.
-매크로는 여러개의 명령어를 하나로 합친것이다.
-매크로가 실제 바디로 교체되는 것을 macro expansion 이라한다. 

 

#define은 기호적 상수뿐만아니라 함수처럼 사용할 수 도있다. 

16.4 함수 같은 매크로

매크로는 전처리기 단계에서 말그대로 값을 복붙만 해주기 때문에 프로그래머가 의도한것과 다르게 계산이 될수 있다는 점을 주의 해야한다.

16.5 가변 인수 매크로

여러개의 인자를 받을때는 ...과 __VA_ARGS__을 쓸수 있다. 

16.7 조건에 따라 다르게 컴파일하기

#undef는 define된것을 undefine 해주며 미리 정의 되지 않은것또한 undefine이 가능하다. 

#if, #elif, #endif와 같은 것을 사용해서 조건에 따라 다르게 #include를 할수도 있다.  

매크로의 이름만 정의하는 것도 가능하며 이런 이름만 정의된 비어있는 매크로를 empty매크로라고 부른다. 

그런 매크로를 활용하여 이하와 같은 응용이 가능하다. 

이하의 코드처럼 프로그램이 돌아가는 플랫폼에 따라서 다르게 컴파일이 되게 할수도 있다.

16.9 #pragma 지시자

컴파일러에게 컴파일 방법을 지시하는 지시자임. 

컴파일러마다 지원하는 것이 다르며 비주얼스튜디오의 지시자 목록은 이하의 링크 참고

docs.microsoft.com/en-us/cpp/preprocessor/pragma-directives-and-the-pragma-keyword?view=vs-2019

 

 

댓글