#defnie 상수는 다음과 같은 단점이 있다.
1) 전처리기에서 처리된다. 즉 컴파일러에서 제어할 수 없으니 데이터 타입 검증이 되지 않는다.
특히 매크로 인자의 경우, #define은 인자의 타입을 지정하지 않기 때문에 의도하지 않은 결과를 만들어내기도 한다. 예를 들면, 소수로 (float)받으려는 의도였는데, 호출하는 쪽에서 정수 (int)로 입력해서, 4/3이 1의 결과가 나오는 일이다.
왠만하면, 컴파일러가 이해할 수 있는 형태로 코드를 작성하는게 안전하다.
2) 매번 코드가 복사되기 때문에, 실행 코드 크기가 늘어난다.
매크로 함수는 모두 치환으로 바뀌기 때문에 inline함수와 유사하게 동작한다. 다만, 이를 의도한 거라면 차라리 inline을 쓰는게 낫다.
#define 매크로는 인자 개수와 타입, 반환 타입을 전혀 신경 쓰지 않는 데다가, 상속과 재정의가 되지 않는다. 또한 inline이기 때문에, 치환이 되는 곳마다 코드가 copy/paste 된다.
#define 매크로를 매크로의 매크로 형태로 작성하다보면, 자기도 모르게 대량의 코드가 생성된다

'Technical > Organize' 카테고리의 다른 글
[Technical Organize] 기술면접_요약정리 (2) | 2022.12.28 |
---|---|
[Technical Organize] 기술면접_자료구조&알고리즘 (1) | 2022.12.28 |
[Technical Organize] 기술면접_수학&논리 (1) | 2022.12.28 |
[Technical Organize] 기술면접_디자인패턴 (0) | 2022.12.28 |
[Technical Organize] 기술면접_DirectX (1) | 2022.12.28 |
댓글