C에서 사용자정의 자료형을 만들수 없다는게 맞나요?
글쓴이: u235 / 작성시간: 화, 2012/07/24 - 10:36오후
8051 계열중
char chr[5]; 배열에서
이 5바이트에 대해 >> 연산이 필요 합니다.
흔히들 하나씩 처리하면 되지 않냐고들 하지만 LSB가 다음요소의 MSB로 전달이 안되는 문제를 간과한 발상이지요.
이문제를 해결하기 위해서는 5바이트를 하나의 자료형처럼 사용하는 사용자 정의 자료형을 선언하면 되겠으나
C에서는 아쉽게도 이를 지원하지 않는다네요.
물론 구조체(공용체) 역시 기본 자료형을 규합한 복합 자료형이지 사용자정의 자료형은 아닙니다.
복잡하지만 5바이트를 새 자료형으로 typedef 하는방법은 있다고 하는데요.
가능하신분은 작동원리를 부탁 드립니다.
참고로 8051계열의 최대 자료형은 long (4Byte)가 최대 입니다.
Forums:
5바이트짜리 자료형을 만드는 방법은 구조체나 배열의
5바이트짜리 자료형을 만드는 방법은 구조체나 배열의 typedef를 이용하면 없진 않으나, 어차피 대입 연산자나 쉬프트 연산자의 피연산자로 사용할 수가 없으므로
아무 의미가 없습니다. C++이라 해도, 연산자 오버로딩이 가능하다는 점을 빼면 이점에 있어서는 큰 차이가 없습니다.
결국 내부 동작을 직접 구현하셔야 하는건 무슨 언어로 하든 마찬가지입니다.
1이나 2, 또는 4바이트 단위로 처리를 하되, LSB에서 MSB로 넘어가는건 프로그래머가 알아서 '잘' 처리하는 수밖에는 없습니다.
참고로 5바이트의 자료형 만드는 방법은 다음과 같습니다.
typedef char pentabyte[5];
그러나 어차피 배열이므로 쉬프트 연산자는 커녕 대입조차 안됩니다.
내장되지 않은 타입에 대해서 연산자를 알아서
내장되지 않은 타입에 대해서 연산자를 알아서 정의해주는 언어가 존재하기나 하나요?
자동으로 시프트 연산이 적용되지 않으므로 사용자 정의 자료형을 만들수 없다는건 억지같은데요.
제발 좀...
"참고로 5바이트의 자료형 만드는 방법은 다음과 같습니다."
다시한번 리플을 읽어보니...
저한테 태클거는 건줄 알았는데 질문자한테 말하는 내용일수도 있겠네요.
질문자한테 하는 말이라면 죄송합니다. 제가 좀 신경질적으로 반응한 것 같네요.
char data[5] 같은것으로 하나의 5바이트 자료형이라 하는건 억지라 사료됩니다.
5개의 char 배열은 어떤 사칙연산도 가
능하지 않으므로
단지 배열을 리네임 한것일뿐 완전한 사용자정의 자료형이 아닙니다.
구조체형도 흔히들 사용자 자료형으로 부르기도 하나
엄밀히 말해 기본 자료형만을 조합한 조합 자료형일뿐 사용자 정의 자료형이라 하는건 번역 오류가 아닐까 합니다.
James Gostling
댓글 달기