프로그램을 개발할 때에 업무 로직에 영향을 주지 않고 메모를 하거나, 특정 부분의 기능을 더 이상 사용하지 않거나 임시로 기능을 막고 싶은 경우가 있을 것입니다. 이 때 사용할 수 있는 것이 주석문입니다. 이렇게 주석문을 사용하면 나중에 프로그램 source를 유지보수할 때에 업무 파악을 하는 데 도움을 주거나, 기존에 만들었으나 사용하지 않던 기능을 다시 살릴 때에이 유용하게 사용될 것입니다. 이를 위하여 제공되는 것이 바로 주석문(Comment)입니다. 이 주석문은 컴파일의 preprocess 단계에서 제거되어 프로그램 코딩에는 영향을 주지 않는 부분입니다.
주석문은 두가지 종류가 있습니다.
1. 라인 주석문 (//)
라인 주석문은 slash 두 개(//)를 주석의 시작으로 하여 그 라인의 끝까지를 주석으로 처리하는 주석문입니다.
예). 라인의 처음부터 주석
// 이름
char name[50];
위의 예처럼 라인의 시작에 있으면 그 라인 전체가 주석 처리됩니다.
예). 중간부터 주석
char name[50]; // 이름
처럼 라인의 중간에 있으면 //부터 그 라인의 끝까지만 주석 처리가 됩니다.
예). 주석문이 아닌 경우
printf("//이름");
처럼 문자열 literal 상수 속에 포함된 경우는 주석문이 아니고 상수 데이터입니다.
2. block 단위 주석 (/* ~ */)
같은 라인을 벗어난 넓은 범위에 주석 처리를 하고 싶은 경우에는 /* ~ */ 주석을 사용합니다.
/*를 주석의 시작으로 하고 */를 주석의 끝으로 인식합니다.
예). 정상 사용 예제
/* 이 부분은 xxx 요건으로 인하여 사용하지 않습니다
printf("이름");
*/
위와 같이 /*와 */ 사이의 내용은 주석으로 처리되어 컴파일 시에 무시됩니다.
예). 잘못 사용한 예제
/* 이 부분은 xxx 요건으로 인하여 사용하지 않습니다
/*
printf("이름");
*/
*/
위의 경우는 주석을 중첩으로 사용하면 오류가 발생합니다. 끝의 닫는 주석(*/)하나가 짝이 없어서 오류가 발생합니다.
예). 주석문의 사용 예제
/*-------------------------------------------
* 프로그램 : 데이터를 전처리하는 업무
* 작성자 : 홍길동
* 작성일 : 2019.10.11
*-------------------------------------------*/
#include <stdio.h>
......
/*------------- struct 정의 -------------*/
// 학생의 정보를 관리하는 자료 구조
typedef struct {
char name[50]; // 학생의 이름
char birth[9]; // 학생의 생년월일
......
} student_t;
......
/*------------- 전역 변수 정의 -------------*/
long total_count; // 전체 처리 건수
long cur_count; // 현재까지 처리한 건수
.......
/*--------------------------------------------
* 기능 : 한 건의 학생 데이터를 읽어들임
* 파라미터:
* student : 학생의 데이터를 읽어서 저장됨
* RETURN :
* 정상이면 0, 오류이면 -1을 return함
*--------------------------------------------*/
int read_student(student_t *student)
{
char name[50]; // 이름
char birth[9]; // 생년월일
.......
// db에서 데이터를 읽음
if(fetch(...) == 0) {
return -1;
}
/* 요구사항이 A->B로 바뀌면서 이 부분은 사용하지 않습니다.
2019.10.21 by 홍길동
......
*/
return 0;
}
......
주석문의 작성은 상당히 귀찮은 일입니다. 그러나 약간의 정성으로 향후에 빠른 로직의 이해와 변경 이력을 알 수 있도록 기록하는 것이 좋습니다. 또한 기왕 작성하는 주석문에 대해서는 약간의 Pattern을 정해서 보기 편하도록 예쁘게 작성하는 것이 좋습니다.
'C언어 > 문법' 카테고리의 다른 글
7. C 프로그래밍의 시작 - 함수 (2) | 2019.10.22 |
---|---|
6. 식별자 명명 규칙 (2) | 2019.10.22 |
4. C 소스 파일 구성 (0) | 2019.10.20 |
3. C언어의 컴파일 과정 (0) | 2019.10.20 |
2. C언어 개발 환경 (실습 환경) (0) | 2019.10.13 |