define을 사용한 version 처리.

원민수 2008.02.09 03:44 조회 수 : 15026 추천:127

안녕하세요. 여태까지 항상 C 언어를 가지고 계속 공부해왔지만, 이러한 것을 볼 때마다 드는 생각이 정말 모르는 것이 너무 많구나 라는 생각들이 드네요.. 다름이 아니라, 요즘 fuse(Filesystem in Userspace)를 보면서 version에 따른 structure 처리를 보고 잘 사용하면, 좋은 거 같아서 이렇게 올립니다. 사실 preprocessing을 가지고 상당한 테크닉들 많이 존재하기 때문에 많은 분들이 아실거 같긴 하지만, 혹시나 해서 올립니다. ^^

library 구현에 있어서, 사용되는 함수의 기능 등의 확장으로 인해서 함수 정의 뿐 아니라 원형 그리고 data structure도 바뀌는 경우가 종종 발생할 거라고 생각됩니다. 이러한 경우에 #define을 사용해서 library의 version에 따라 다르게 처리하면, old 버전을 사용하던 어플리케이션 등에 대한 scalability를 제공함에 있어서 좀더 좋을 것입니다.

fuse같은 경우에는 다음과 같이 처리하도록 되어 있더군요.
filesystem의 file_operations와 같은 기능을 하는 fuse_operations 라는 구조체를 사용함에 있어서 old 버전과 new 버전을 처리함에 있어서
#ifdef FUSE_VERSION == 21
#define fuse_operations fuse_operations_compat2
#else
#define fuse_operations fuse_operations_compat22
#endif

이런식으로 처리하면, compile time에 -DFUSE_VERSION에 지정함에 따라 old structure를 사용해서 이미 개발된 프로그램도 수정 없이 계속 사용가능하기 때문에 library 개발시에는 좋은 테크닉인거 같습니다.

위에 제가 적어놓은 코드들은 간략히 적어 놓은 것이기 때문에, 좀더 자세히 보고 싶은신 분들은 fuse develop library를 설치하신 후에 fuse.h와 실제 data structure가 정의 되어 있는 fuse_compat.h를 보시면 될거 같습니다.

그럼 늦었지만, 남은 연휴 잘 보내시고요. 모두들 새해 복 많이 받으세요~!.
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 강좌, 팁, 정보등에 대해 올리는 게시판입니다. woos 2016.04.09 246
129 제2회 통신망 안정성 확보를 위한 인공지능 해커톤 인공지능팩토리 2023.07.21 10
128 [챗GPT 러닝데이 | 챗GPT말고 LLM] 딥러닝 병렬처리 및 Polyglot 언어모델 file 인공지능팩토리 2023.05.12 14
127 [한국농수산식품유통공사] 2022 농산물 가격 예측 AI 경진대회 ~ 8. 28. (일) 15:00 접수마감 인공지능팩토리 2022.07.29 15
126 제5회 2023 연구개발특구 AI SPARK 챌린지 인공지능팩토리 2023.04.18 16
125 무료온라인 [랭체인러닝데이] 챗GPT 점메추 메뉴판, 예산입력하고 점심 메뉴 추천받자 file 인공지능팩토리 2023.06.02 16
124 [총 상금 1억원] 2022년 스마트농업 AI 경진대회 ~ 8월 28일 (일) 17시까지 접수마감 인공지능팩토리 2022.08.14 17
123 INNOPOLIS AI SPACE-S 인공지능 세미나 - 정형 데이터를 다루는 머신러닝 문제해결 패턴 인공지능팩토리 2022.09.14 17
122 [SD러닝데이] 디자이너의 영상&3D에서의 AI 활용 실전 워크플로우 file 인공지능팩토리1 2023.10.17 17
121 제4차 USG AI·데이터 문제해결 제조혁신 경진대회 file 인공지능팩토리1 2023.10.25 17
120 [캐글 1위 수상자의 세미나] 시장 데이터 분석 및 머신러닝 활용 가이드 인공지능팩토리 2022.08.13 18
119 [무료 세미나] 퀀트 투자와 데이터 기반 트레이딩 그리고 인공지능 인공지능팩토리 2022.08.24 18
118 [공모전] 제4회 빅데이터・인공지능 스타트업 경진대회 인공지능팩토리 2022.09.08 19
117 베타 테스터 모집 : AIF BUG SLAY 인공지능팩토리 2023.04.18 19
116 제2회 ETRI 휴먼이해 인공지능 논문경진대회 ~ 4월 14일 (금) 8시 접수 마감 인공지능팩토리 2023.02.28 22
115 [무료세미나] - SD러닝데이 Knock Knock. "Stable Diffusion? 인공지능팩토리 2023.06.30 22
114 2023 제1회 철도 인공지능 경진대회 인공지능팩토리 2023.07.24 22
113 무료세미나 음성 챗봇 만들기와 마이크로소프트 ISV 혜택 및 등록팁 방출! 인공지능팩토리 2023.07.26 23
112 (채용특전) 제2회 교원그룹 AI 챌린지 - 생성 AI기반 에듀테크 사업 제안 대회 인공지능팩토리 2023.05.22 24
111 장기 수요 예측 모델 경진대회 수상 솔루션 소개 | 제4회 빅스타 경진대회 연계 세미나 인공지능팩토리 2022.12.20 25
110 [챗GPT 러닝데이 | 챗GPT말고 LLM] LLM 기반 챗봇 만들기 file 인공지능팩토리 2023.05.06 25
XE Login