C언어에서 사용자 정의형을 printf로 출력할때 어떤 포멧 스트링을 사용하는것이 좋을까요?
글쓴이: superkkt / 작성시간: 일, 2006/12/10 - 3:28오후
안녕하세요.
오늘도 초보적인 질문 하나 올립니다. 사용자 정의형을 사용하는 값을 다룰때 해당 정의형이 어떤 타입일거라고 가정하고 코드를 짜는것은 좋지않은 습관이라고 알고 있습니다. 해당 정의형의 실제 타입이 구현체마다 다를수 있거나 또는 다른 타입으로 변할 가능성이 높아서 일수도 있고요.
하지만 사용자 정의형이 정수형이라고 가정했을 때, printf 함수로 값을 출력해야 하는 경우가 있습니다. 이때 포멧 스트링에 타입이 명시가 되어야 하는데 이런 경우는 어떻게 대처를 하는게 좋을까요?
사용가능한 가장 큰 타입으로 캐스팅해서 출력하는게 좋을까요? 아니면 맨페이지나 헤더 파일을 뒤져서 어떤 타입으로 정의되었는지 찾은 후 해당 타입으로 출력하는게 좋을까요?
Forums:
함수
사용자 정의 형을 만들 때는
그 정보를 출력하거나 문자열로 바꿔주는 함수도 같이 만들면 되지 않을까요?
size_t는 %z(표!준!)를
size_t는 %z(표!준!)를 사용하면 되겠지만 fpos_t는 난감하군요.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
아무리 생각해도 정답은 typecasting 과 적절한 변수겠네요.
뒤져서 알아낸 것은 언제든 바뀔 수 있는 것일테니...
statvfs() 함수가
statvfs() 함수가 사용하는 statvfs 구조체는 아래 멤버들을 가집니다.
맨페이지에는 아래와 같이 적혀있네요.
Here the types fsblkcnt_t and fsfilcnt_t are defined in sys/types.h. Both used to be unsigned long.
여기서는 두 타입이 unsigned long이라고 명시되어 있는데, 실제로 그런 시스템이 있는지는 모르겠지만 이 두개의 타입이 unsigned long이 아니 시스템도 있지 않을까하는 생각이 들어서 이 질문을 올린겁니다.
이런 경우 printf 사용시 범용적으로 사용할 수 있는 방법이 뭐가 있을까요?
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
댓글 달기