코드보면 써있는데 용도가 머임요?
typedef 사용방법좀...
ㅂㅈㄹㄹㅈ(175.195)
2015-04-12 22:50
추천 0
댓글 6
다른 게시글
-
오늘의 멍청 [1]NoOTL(shippuden91) | 15.04.12추천 0
-
C언어 이거 왜 안되는지 아는 사람? [4]ㅋㅋ(117.55) | 15.04.12추천 0
-
형님들 별찍기 하려 하는데 도와줘 [4]help(175.112) | 15.04.12추천 0
-
C++ 멤버함수로만 오버로딩가능한 연산자 먼말이냐 [1]이지(112.144) | 15.04.12추천 0
-
객체지향의 반대말은? [3]익명(182.222) | 15.04.12추천 0
-
대체 쓰레드 쓰레드 하는데 이게 뭔말이냐 ?댜채(122.254) | 15.04.12추천 0
-
(중랑구 묵동) 중고 컴퓨터 매입, 판매하는 '헌컴3'입니다. [2]중랑구업자(usedcom3) | 15.04.12추천 0
-
간단한 자바 프로젝트 짜주시면 사례금드림자바충(182.222) | 15.04.12추천 0
-
c언어로 서버나 네트워크 만드는거 어떻게 하나요? [4]익명(121.143) | 15.04.12추천 0
-
취미로 프로그래밍 배우고싶은데 뭐뭐 공부해야하냐 [1]fasd(121.177) | 15.04.12추천 0
직저해보셈
일반 변수 선언문 앞에 typedef를 붙이면 그 변수 선언문은 변수를 선언하는 대신 해당 변수의 자료형을 그 이름의 새로운 자료형으로 정의하게 된다. 예를 들어 보자.
1) typedef long long int LL; 이걸 예로 들면 매번 변수 선언할 때마다 long long int abc; 식으로 선언하기 귀찮으니 저렇게 한 줄 써놓고 LL abc; 같이 쓰려고 재정의한 예.
2) 포인터 변수는 일반 변수 선언문에 이름 앞에 *만 붙이면 포인터 변수 선언이 된다. (예: int a, b; -> int (*a), (*b); 물론 괄호는 생략 가능). 마찬가지로 배열이나 함수도 포인터 변수 선언이 가능한데 함수 포인터를 예로 들면 함수를 int func(int); 같이 맨 윗 줄에 선언한 기억이 있을텐데 저기에 함수 이름 대신에 (*XXX)를 쓰면 함수 포인터 선언문이 된다. 그러니까 int (*ptrFunc)(int); 식으로 하면 int xxx(int) 형 함수의 주소를 가리킬 수 있는 포인터 변수 ptrFunc이 선언됨.
이걸 매번 저렇게 쓰기가 귀찮으므로 typedef int (*FUNC_PTR)(int); 식으로 타입을 새로 정의하고 FUNC_PTR ptrFunc; 식으로 깔끔하게 선언하기도 한다. 배열의 포인터도 저런 식으로 은근히 많이 하고.
3) 마지막으로 Windows API 프로그래밍에서의 예인데 Windows API의 windows.h 헤더는 자료형을 쓸 때 C의 기본 자료형인 char, short, int, long 이런 건 잘 안 쓰고 대부분 자체적으로 typedef해서 정의한 대문자 자료형 이름을 사용한다. (예: DWORD = unsigned long을 재정의한 거) 이건 그 자료형의 용도를 보다 잘 드러내줄 뿐 아니라 컴파일러나 환경이 바뀌어도 헤더를 제공할 때 typedef 정의만 바꿔서 제공해 주면 기존에 API를 이용해서 짰던 코드를 다시 짜지 않고서도 재활용이 가능하기 때문에 저런 식으로 짜는 관습이 되어 있다.