Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어의 링크 섹션과 정의 섹션 완벽 이해하기

링크 섹션과 정의 섹션이란?

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를 정의하여 계산식에서 활용됩니다.