[C/C++] 매크로 함수

개발 노트 2009. 1. 30. 10:11 posted by 무병장수권력자


유용하게 사용하는 매크로 함수

작성자 : 김문규
최초 작성일 : 2009. 1.30

예시 겸 작성법
#include <stdio.h>
// 최대값 구하기
#define MAX(a,b) ( (a) > (b) ) ? (a):(b)
// 대문자로
#define UPCASE(c) (( (c)>='a' && (c)<='z') ? (c)-('a'-'A') : (c) )
// 소문자로
#define LOWCASE(c) (( (c)>='A' && (c)<='Z') ? (c)+('a'-'A') : (c) )
// 행 분리 시에는 '\' 사용
#define ASSERT(x) if (!(x) ) \
                  {          \
                     printf("assert failed. %s(%d) at %s %s(%s)\n", __FILE__, __LINE__, __DATE__, __TIME__, __TIMESTAMP__); \
                  }
// #은 "" 처럼 동작
#define DPRINT(expr) printf(#expr " = %g\n", expr )
// ##은 문자 붙이기
#define TPRINT(expr) printf("%d, %d\n", expr##1, expr##2)
void main()
{
 printf("%d\n", MAX(5,3) );
 printf("%g\n", MAX(5.4,3.2) );
 printf("%c\n", UPCASE('a'));
 printf("%c\n", LOWCASE('A'));
 ASSERT(0);
 double x = 3.4;
 double y = 2.0;
 DPRINT(x/y);    // printf("x/y" " = %g\n", expr)
 int a1 = 10, a2 = 20;
 TPRINT(a);
}