2009-07-26 3 views
0

나는 strncpy 함수에 대한 래퍼를 만들었다.재사용 가능한 코드를 넣을 곳

많은 헤더와 소스 파일 (모두 약 20 개)이 포함 된 프로젝트에서이 파일을 사용해야합니다. 그리고이 래퍼가 대부분의 경우에 사용됩니다.

코드가 매우 짧기 때문에이 래퍼를 내 프로젝트에 구현하는 가장 좋은 방법은 어디인지 궁금합니다.

이 정보는 utilities.h라는 헤더에 포함시키는 것이 유용 할 수 있습니다. 그리고이 헤더를 필요한 모든 소스 파일에 포함 시키십시오.

그리고 앞으로 어떤 프로젝트가 필요할까요?

저는 C 프로그램에 새로운 것이므로이 문제에 대한 좋은 지침을 찾고 있습니다.

많은 감사,

/* Null terminate a string after coping */ 
char* strncpy_wrapper(char *dest, const char* source, 
         const size_t dest_size) 
{ 
    strncpy(dest, source, dest_size); 
    /* 
    * If the destination is greater than zero terminate with a null. 
    */ 
    if(dest_size > 0) 
    { 
     dest[dest_size - 1] = '\0'; 
    } 

    return dest; 
} 

답변

3

헤더를 사용하는 것이 좋습니다. 나는 당신이 그 주변에 '가드'를 넣어 것이 좋습니다. 다음과 같음 :

#ifndef UTILITIES_H 
#define UTILITIES_H 

//definitions here 

#endif //UTILITIES_H 
+0

빠른 질문. 이것은 작은 하나의 기능이기 때문입니다. 내 함수 선언에 헤더 (utilities.h)가 있어야하고 정의를위한 소스 파일 (utilities.c)이 있어야합니까? – ant2009

+1

일반적으로 코드를 .c 파일에 넣고 .h 파일의 선언 (함수 서명)을 넣습니다. 이렇게하면 소스 코드를 '배울 필요가 없습니다 (컴파일 된 코드로 충분합니다). 작은 기능을 위해 그것은 이상한하지만 프로젝트가 증가 할 때, 당신은 단지 컴파일 시간이 크게 증가 할 수있는 모든 소스 파일을 필요로하지 무엇 컴파일합니다. – Burkhard

1

난 당신이 옳은 길을 향하고 있다고 생각. 필요에 따라 포함될 수있는 공통 기능을 갖춘 라이브러리를 만드는 것이 일반적입니다. Helper, Common 또는 Utilities를 제안 할 때 자주 이름을 찾을 수 있습니다.

2

utilities.h 파일에 삽입하는 아이디어는 나쁘지 않습니다. 매우 일반적인 솔루션입니다. 그러나 응용 프로그램에서이 함수를 범주화 할 수있는 구체적인 방법이 없는지 확인하십시오. 우리 모두 알고 있듯이, 모든 것은 정확하게 utilities.h 파일의 의미 인 잡다한 레이블을 붙일 수 있습니다.