C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[37233] Re:구조체를 변경할 때
둘리 [dooly386] 811 읽음    2004-09-13 11:51
구조체의 크기가 꼭 정해진 상태라면
결국 내부 데이터 값을 가지고 판단해야 겠죠.
Reserved 에 있는 값이 그전에 어떻게 초기화를 했는지 모르지만
가령 그전에 사용하는게 zero 화 시켜셔 사용했다면
reserved 에 하나의 byte 를 할당해서 struct data의 version 정도로 쓰면
될듯 하군요.
즉 reserved 가 88 개 남았으니까 이중 하나를
char dataversion; 이라고해서
그전 데이터는 0으로 초기화가 되어 있었다면
이제부터는 1 로 쓰면 될듯 하군요.

그러면 해당 구조체를 받는 쪽에서
그 위치를 보고 month, date,week 등이 적용되야 되는지를 판단하는거죠.

이거보다 좀 심한 방법으로는
어짜피 hour 가 int 형이고 (시간을 나타내실려고 하는건지 아니면 경과 시간을 나타내실려고 하는건지
잘 모르겠군요, 경과 시간을 나타내실려고 했다면 24 시간보다 큰 수치도 들어 있을테니까요)

어쩃든 평볌한 시간이면 24 시간보다 큰수는 없을거고요.
더더욱 없는것은 - 시간 이겠죠. 마이너스 시간으로 플래그를 해두시는 방법도 있을듯 합니다.

전 앞의 방법을 추천 드리고 싶군요.

감사 합니다.
초보자 님이 쓰신 글 :
: 라이브러리 함수의 인자로 구조체를 넘겨주는데..
:
: 이 구조체에 새로운 파라미터를 추가하고자 합니다...
:
: 새로운 파라미터가 구조체에 추가될 일이 생길 경우를 대비하여 구조체를 다음과 같이 정의하였습니다..
:
: 예를 들면
: type struct{
:    int hour;
:    int minute;
:    int second;
:    char  Reserved[100];  // 100 byte 여분.
: } Time;
:
: void SetTime(Time *ptime);  /// 라이브러리 함수
:
: 이렇게 정의되어 있는 구조체를 사용하다가 여기에 새로운 변수를 추가하려고 할 때 어떻게 해야될지 좋은 방법 없을까요? 예를 들면 month, date, week를 추가한다면..
:
: type struct{
:    int hour;
:    int minute;
:    int second;
:    int month;
:    int date;
:    int week;
:    char  Reserved[88];  // 88byte 여분.
: } Time;
:
: 일반 application 프로그램을 짜면 구조체에 파라미터를 그냥 추가하면 되지만
: 라이브러리 프로그램을 개발하고 있는데...이 파라미터 값들은 다른 곳에서 네트워크를 통해서 라이브러리가 데이터를 받아옵니다.. 이 추가된 파라미터 값들은 항상 값을 읽어올 수 있는 것이 아니라 어디서 값을 읽어오느냐 따라서 값이 존재할 수도 있고 없을 수도 있습니다..
: 이 점(값이 존재하는지 아닌지)은 라이브러리는 알 수 있지만 위와 같은 형태로 한다면 application에서는 그 값이 쓰레기 값인지 아니면 실제 값인지 알수가 없습니다.. 이런 호환성을 생각해서 구조체을 만들 수 있는 방법이 없을까요?
:
: 좋은 방법 있으면 부탁드립니다..

+ -

관련 글 리스트
37231 구조체를 변경할 때 초보자 716 2004/09/13
37233     Re:구조체를 변경할 때 둘리 811 2004/09/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.