책 '쉽게 배우는 C 프로그래밍 테크닉' 에 나온 내용을 발췌하여 정리했다.
다음 내용이 포함된다.
헤더 파일에는 함수의 원형 선언문이나 상수의 정의, typedef 정의 등을 기술한다. 여기서 주의할 점은, 다른 파일에서 참조할 필요가 있는 것만을 헤더 파일에 포함시켜야 한다는 점이다. 외부에서 참조할 일이 없는 선언이나 정의는 헤더 파일에 넣지 말고 .c 파일의 앞부분에 두도록 한다.
외부에 공개하는 함수는 .c 파일에 본문을 정의하고, 헤더 파일에서는 그 원형을 선언한다. 외부에서 이 함수를 사용하려면 헤더 파일을 인클루드한다. 또 .c 파일도 자신의 함수가 선언되어 있는 헤더 파일을 인클루드하도록 한다.
다음 내용이 포함된다.
.c 파일에는 함수와 변수의 정의, 그리고 파일 내에서만 쓰이고 공개할 필요가 없는 상수, 구조체, 형 등의 정의를 기술한다.
특히 .c 파일 내에서만 쓰이는 함수나 정적 전역 변수는 반드시 static 으로 정의한다. 이것은 다음 사항을 보장해준다.
원주율 등 변하지 않은 상수를 이용하는 경우 변수를 const 로 정의하면 그 값이 변하지 않는 것을 보장할 수 있다.
참고로 const 수식어를 지정하여 변수를 정의하는 경우, 컴파일러에 따라서는 이 변수를 쓰기 금지된(read-only) 메모리 영역에 배치하는 수도 있다. 그 덕분에 메모리 보호(memory protection)가 이루어지는 운영체제에서는 가령 “assignment of read-only location” 경고를 무시하고 억지로 대입문을 실행하여도, 실행시에 오류가 발생하는 수가 있다.
충분한 사유가 있어서 일정한 분량의 코드를 한꺼번에 뛰어넘는 goto 를 구사하는 것은 꺼릴 필요가 없다. 물론 if(){…} 같은 일반적인 기술 방식을 사용할 수 있는 경우에는 굳이 goto 를 사용할 필요가 없고, goto 를 사용하는 경우에는 코드의 위아래를 오가는 스파게티 프로그램이 되지 않도록 조심해서 사용해야 한다.
어떤 서비스 인터페이스 위에 한 겹의 인터페이스를 덧씌워서 서비스를 중계하는 껍데기를 래퍼라고 부른다. 원래 호출되어야 할 함수에 앞서 한 단계 별도의 함수를 두어 다른 작업(인자의 점검, 메시지 출력)을 처리한 후 본래의 함수를 호출하는 것이다.
항목 | 내용 |
목적 | 개발 배경과 개요를 기술한다. |
기능 | 주요 기능을 기술한다. |
인터페이스 | 라이브러리의 기능을 이용하기 위한 인터페이스를 기술한다. |
사용예 | 라이브러리를 이용한 예제를 소개한다. 사용자에게는 중요한 내용이다. |
제공 방식 | 라이브러리가 제공되는 방식(소스공개, 목적파일만 공개 등)을 기술한다. Makefile 을 만들 때 필요하다. |
제공 목록 | 라이브러리가 제공하는 함수, 구조체, 상수 등의 목록 |
항목 | 내용 |
실시 기간 | 테스트를 실시할 예정 시기 |
실시 방법 | 테스트 환경에 대해 쓴다. 테스트에 복잡한 구성이 필요한 경우에는 그림을 포함하여 상세하게 기술한다. |
사용 장비 | 테스트에 필요한 기자재 일람. 특수한 장비가 필요한 경우, 이의 조달, 일정 조율 등에 관한 내용을 포함한다. |
테스트 항목 | 실시할 테스트의 내용을 기술한다. 필요한 경우 사용 장비와 환경에 대해서도 언급한다. |
테스트 결과 | 테스트 실시 결과를 기록한다. 장애가 발견된 경우 그 내용, 대책, 재 테스트 결과등을 기록한다. |
프로그래밍은 프로그래머 본인의 지식과 기술이 크게 작용하는 작업이다. 기술자인 이상, 자신의 기술력을 항상 레벨업해나가지 않으면 안된다. 이를 위해 중요한 것은 다음과 같다.