C로 중대형 프로그램을 만들때 해더의 인클루드 관계에 관해 조언 부탁드립니다.
글쓴이: dingkyu / 작성시간: 화, 2008/10/28 - 11:31오후
언제나 여기서 좋은 이야기만 듣고가는 아직은 풋내기 프로그래머입니다.
어찌어찌해서 이제 C의 중수이상으로 거듭나기 위해
설계, 코딩을 혼자서 하게 되었는데요
프로그램의 규모가 아주 쪼오금 큽니다. (예기 들어보시면 장난하나...할지도..^^;;;)
암튼 여쭤보고 싶은건 C로 중형이상의 프로그램을 짤때
각 함수들과 헤더화일들간의 관계를 좀 구조적(?)으로 구성하고자 할때
지켜야 하는 원칙이나 룰 같은게 궁금합니다.
예를 들어 어떤 기능의 함수가 있으면 그 함수의 소스코드와
헤더화일을 인클루드 하는 식으로 다른 함수에서 자유로이
사용하게끔 설계를 하고 싶습니다.
그러나 함수에 사용되는 마크로나 구조체 등의 혼용이
그렇게 간단하지만은 않네요.
고수님들의 노하우를 좀 알려주시면 고맙겠습니다.
그리고 혹시 이에 관해 참고할만한 좋은 책 있으면 추천부탁드리겠습니다.
Forums:
저같은 경우는
저같은 경우는 헤더에 아래와 같이 정의합니다. 어떤 책에서 봤는데.. 어떤책인지 기억이..
#ifdef _CFILE_NAME_C_
#define EXTERN
#else
#define EXTERN extern
#endif
EXTERN void function1(void);
EXTERN void function2(void);
그리고 해당되는 c file 앞부분에 아래와 같이 정의 합니다.
#define _CFILE_NAME_C_
이렇게하면 해당 header를 include한 다른 파일은 extern이 붙게 되고
이 header를 구현한 c file에서는 extern이 붙지 않아 관리가 편리합니다.
--------------------------------------------------------------------------------------
조금씩이라도 전진한다.
제가 사용하는
제가 사용하는 방법을 올려 봅니다. 도움이 되었으면...좋겠네요...^^;;
#ifndef __CHANGE_H__ <== 중복 헤더 참조 방지
#define __CHANGE_H__
/*/////////////////////////////////////////////////////////////////////////*/
#ifdef __cplusplus
extern "C" {
#endif
/*/////////////////////////////////////////////////////////////////////////*/
#include "sql_define.h" <= sql관련 정의 include
#include "socketimpl.h" <= 소켓관련 정의 include
#include "stringimpl.h" <= 문자열 정의 include
#include "cfgimpl.h" <= 환경파일 정의 include
#ifdef _TUXEDO
#include "fml32.h"
#endif /* _TUXEDO */
/****************************************************************************
*
* define variable
*
*/
/****************************************************************************
*
* global value
*
*/
/****************************************************************************
*
* signal function
*
*/
__jcallbackspec void child_process_sigCapture(int nSigno);
__jcallbackspec void sigCapture(int nSigNo);
/****************************************************************************
*
* function
*
*/
boolean signal_thread(struct _jconfiguration* pconfig);
/*/////////////////////////////////////////////////////////////////////////*/
#ifdef __cplusplus
}
#endif
저는 각 함수의 목적에 맞게 정의후 헤당 하는 inclue을 필요시 참조하는 방식을 사용합니다.
댓글 달기