typedef, define

1. typedef 는 데이터형을 만드는 명령어 입니다. C패턴을 이용하려면 반드시 알아야 합니다. 간단하게 다음과 같이 사용할 수 있습니다.


typedef unsigned char  u8;

u8 i = 0; //unsinged char i = 0과 동일



2. 콜백 함수도 typedef를 이용해서 만들 수 있습니다. 

typedef void (*timer_handler)(s8 timer_id, u32 param1);
s8 register_timer(u32 period, timer_handler handler)
{
  ...
}



3. firmware 개발시 8bit, 16bit, 32bit MCU를 개발하다 보면 애초에 형 지정을 잘못해서 모든 소스를 뒤져 수정한 경험이 있으실 지도 모르겠습니다. 

특히 int, long은 MCU마다 달라질 수 있으니 조심해야 합니다. 이럴 경우 아래와 같은 예제를 사용하여 int, long의 길이가 달라질 경우 해당 부분만 수정하면 모든 소스에 동일 적용되니 편할 것입니다.

typedef unsigned char  u8;
typedef signed char    s8;

typedef unsigned short u16;
typedef signed short   s16;

typedef unsigned long  u32;
typedef signed long    s32;


4. define은 기본적인 구문을 미리 적어놓는 전처리기입니다.  저는 typedef, 와 define 을 기본적으로 다음과 같이 항상 사용합니다.

#ifndef DEFINE_H_
#define DEFINE_H_

#define null (void *)0
typedef unsigned char  u8;
typedef signed char    s8;

typedef unsigned short u16;
typedef signed short   s16;

typedef unsigned long  u32;
typedef signed long    s32;

typedef enum
{
  false = 0,
  true  = 1
}bool;

typedef enum
{
  on  = 1,
  off = 0
}power;

typedef enum
{
  low = 0,
  high = 1
}switch_t;



#endif /* DEFINE_H_ */





'▶ 이전글 > C Coding' 카테고리의 다른 글

2차원배열, 함수 매개변수로 넘기는 방법과 파일명 정렬 소스  (0) 2015.09.15
불완전 선언(구조체전방선언)  (0) 2014.10.02
static  (0) 2014.10.02
enum  (0) 2014.10.02
assertion  (0) 2014.10.02