링크 섹션과 정의 섹션이란?
C 언어에서 링크(link) 섹션과 정의(definition) 섹션을 합쳐서 전처리기 지시문(preprocessor directives)이라고 부릅니다. 전처리기 지시문은 컴파일러에게 시스템 라이브러리에 있는 함수를 연결하도록 지시하는 역할을 합니다.
이 중 정의 섹션은 프로그램에서 사용할 모든 기호 상수(symbolic constants)를 정의하는 부분입니다.
링크 섹션 예시
#include<stdio.h>
정의 섹션 예시
#define PI 3.1415
전처리기 지시문은 반드시 # 기호로 시작해야 한다는 점에 유의하세요.
링크와 정의 섹션이 없으면 컴파일러에 따라 프로그램이 실행되지 않을 수 있습니다. 이 섹션들은 컴파일러가 시스템 라이브러리에 미리 정의된 함수들을 제대로 연결할 수 있도록 도와주는 필수 요소입니다.
stdio.h에 포함된 주요 함수
헤더 파일 stdio.h에는 다음과 같은 표준 입출력 및 파일 처리 함수들이 정의되어 있습니다.
| 함수 | 설명 |
|---|---|
| printf() | 문자, 문자열, 실수, 정수, 8진수 등을 화면에 출력합니다. |
| scanf() | 키보드로부터 문자, 문자열, 숫자 데이터를 입력받습니다. |
| getc() | 파일에서 문자를 읽어옵니다. |
| gets() | 키보드로부터 한 줄을 입력받습니다. |
| getchar() | 키보드로부터 문자 하나를 입력받습니다. |
| puts() | 한 줄을 출력 화면에 씁니다. |
| putchar() | 문자 하나를 화면에 출력합니다. |
| clearerr() | 오류 표시자(error indicators)를 초기화합니다. |
| fopen() | 파일을 엽니다. 파일 관련 함수들은 모두 stdio.h 헤더 파일에 정의되어 있습니다. |
| fclose() | 열려 있는 파일을 닫습니다. |
| getw() | 파일에서 정수를 읽어옵니다. |
| putw() | 파일에 정수를 씁니다. |
| fgetc() | 파일에서 문자 하나를 읽어옵니다. |
| putc() | 파일에 문자 하나를 씁니다. |
| fputc() | 파일에 문자 하나를 씁니다. |
| fgets() | 파일에서 문자열을 읽어옵니다. |
| fputs() | 파일에 문자열을 씁니다. |
| feof() | 파일의 끝(end of file) 여부를 확인합니다. |
| fgetchar() | 키보드로부터 문자 하나를 읽어옵니다. |
| fprintf() | 포맷이 지정된 데이터를 파일에 씁니다. |
| fscanf() | 파일에서 포맷이 지정된 데이터를 읽어옵니다. |
| sprintf() | 포맷이 지정된 출력을 문자열에 저장합니다. |
| sscanf() | 문자열로부터 포맷이 지정된 데이터를 읽어옵니다. |
| remove() | 파일을 삭제합니다. |
| fflush() | 파일 버퍼를 비웁니다(flush). |
예제: 원의 둘레 계산하기
다음은 링크 섹션과 정의 섹션을 활용하여 원의 둘레(circumference)를 계산하는 C 프로그램입니다.
#include <stdio.h> // 링크 섹션
#define PI 3.1415 // 정의 섹션
main (){
float c,r;
printf("Enter radius of circle r=");
scanf("%f",&r);
c=2*PI*r;
printf("Circumference of circle c=%f", c);
}실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter radius of circle r=6 Circumference of circle c=37.698002
이처럼 링크 섹션의 #include <stdio.h>가 printf()와 scanf() 함수를 사용할 수 있게 해주고, 정의 섹션의 #define PI 3.1415가 상수 PI를 정의하여 계산식에서 활용됩니다.