Computer/Software

[C언어] typedef와 #define의 차이점

Detacher 2011. 8. 9. 20:17
typedef는 새로운 자료형을 정의할때 사용된다.

비슷한 선언으로 #define이 있지만 차이점이 있다.

우선 #define의 #은 기본적으로 컴파일되기전에 수행되는 선행처리기이며, define은 치환을 한다는 의미가 있다.


다음 문장을 살펴보자
-----------------------------------------------------------
#include <iostream>
#define limit 500    //이 문장을 해석하면, 코드전체에서 선행적으로 limit를 500으로 치환하는 것이다.
 
void main()
{
int a = limit;  //여기서 a값은 500이 된다.
}
----------------------------------------------------------
하지만 #define은 자료형 자체를 선언해 주지는 않는다.

#define limit int 라는 문장은 틀린 문장이다.

이때 필요한게 typedef이다.
----------------------------------------------------------
#include <iostream>
typedef int limit;    
//int의 자료형을 limit으로 쓰겠다는 뜻이다

void main()
{
limit L = 300;    //limit이나 int나 같은 자료형이다. sizeof(L)은 4byte가 출력된다.
}
----------------------------------------------------------


결론: #define은 단순 치환이며 자료형을 선언해주지는 못하지만, typedef는 새로운 자료형을 선언할수있다.





 

'Computer > Software' 카테고리의 다른 글

[C언어] typedef 구조체선언  (0) 2011.08.13
[C언어] 연결리스트  (0) 2011.08.09
[웹해킹] 패킷암호화 알고리즘  (0) 2011.07.15
[웹해킹] 패킷인코딩 방식  (0) 2011.07.15
[Linux] Promiscuous mode 설정방법  (0) 2011.07.14