CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): visual (미주알)
날 짜 (Date): 1995년08월02일(수) 19시20분10초 KDT
제 목(Title): [Re] const와 MACRO의 차이점


#define과 const 변수 또는 inline 함수와의 차이점은

간단히 말해서 pre-processor가 담당하느냐, compiler가 담당하느냐의 차이죠

즉, #define으로 정의된 것들은 compiler가 실제로 컴파일하기 전에 

pre-processor가 소스 코드를 뒤지면서 정의된 상수/함수를 정의한 내용으로 

대치합니다.

예를 들어서 

#define MYVALUE  10

이라고 정의를 하였으면 소스 코드 내의 MYVALUE라는 것은 모두 10으로 대치되지요

이렇게 대치된 후에 비로소 컴파일이 시작됩니다.

#define으로 정의한 함수도 마찬가지 식입니다.


하지만 const 변수 또는 inline 함수는 이와 다르지요...

const 변수는 실제 메모리 상에 공간을 차지하고 있는 진짜 변수입니다.

단지 그 값을 바꿀 수 없다는 것 뿐이죠...

그리고 inline 함수는 MACRO와 비슷하지만 훨씬 더 작성하기 쉽고

진짜 함수와 똑같은 식으로 작성하면 되지요...

예를 들어서 MACRO에서는 return문을 사용할 수 없잖아요...

하지만 inline 함수는 일반 함수와 같은 식으로 작성하면 됩니다.


또 한 가지 알아두셔야 할 점은 우리가 어떤 함수를 inline으로 지정했다고 해서

컴파일러가 반드시 inline code로 만들지는 않는다는 것입니다.

Code의 크기 등등을 고려해서 inline code로 만들 것인지, 아니면 

일반 함수와 같이 만들 것인지는 컴파일러의 재량입니다.

따라서 컴파일러의 종류에 따라서도 다르게 되지요...


횡설수설인데... 도움이 됐을 지 모르겠군요...

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.