6월 30, 2016

[EC++ 02] Prefer consts, enums, and inlines to #defines.

#define 으로 정의한 상수는 preprocessor에 의해 처리가 되어 컴파일러에 잡히지 않는다. 따라서 이 부분에서 실수가 일어나도 컴파일러가 이를 알려줄 수 없기 때문에, 가급적이면 #define의 다른 대체제를 사용하는 것이 좋다.

const

#define을 constants로 바꿔줄 때, 두가지 경우를 고려할 수 있다.

  • Defining constant pointer
  • const 위치에 따른 의미 변화에 유의. [EC++ 03]에서 자세히 다룸.

  • Class-specfic constants
  • static const int value = 5;


enum

"enum hack"

inline

#define function을 정의할 때는 문의 괄호에 반드시 신경써야 함.


Summary

  • For simple constants, prefer const objects or enums to #defines.
  • For function-like macros, prefer inline functions to #defines.

Reference

  • Effective C++ by Scott Meyers

댓글 없음:

댓글 쓰기