header file guard, macros define, use macro (function)