언어 자료구조 알고리즘/C11 표준 라이브러리 함수

C언어 표준 [C언어 표준 라이브러리 함수 가이드]

언제나휴일 2016. 1. 3. 14:49
반응형

C언어 표준


C언어는 1972년 벨 연구소의 데니스 리치가 B를 기반으로 만든 언어입니다.
1983년 미국 국가 표준 협회인 ANSI에서 ANSI X3.159-1989 표준을 지정한 것이 C언어 표준의 시작입니다.
1999 C99 표준으로 잘 알려진 ISO/IEC 9899:1999를 출간하고 2005년에는 ANSI에서도 C99를 표준으로 채택합니다.
그리고 2011년에 C11 표준인 ISO/IEC 9989:2011을 출간합니다.
 
ANSI X3.159-1989 표준에서는 미국 국가 표준 협회에서 최초로 지정하였고 변수 이름과 함수 이름 등을 영어 알파벳과 언더 바, 숫자만 사용할 수 있습니다.
char 형식도 다양한 기호와 숫자 문자, 영어 알파벳은 표현할 수 있지만 한글이나 한자 등을 표현하려면 문자열을 빌려서 표현해야 하는 한계를 갖고 있었죠.
또한 함수의 반환 형식을 명시하지 않아도 오류를 발생하지 않아 많은 부분에서 논리적 버그의 책임은 개발자의 몫이었습니다.
 
 ISO 국제 표준 기구에서 제시한 C99에서는 다양한 국가의 언어를 수용하기 위해 wchar_t 형식을 추가하였고 함수의 반환 형식을 명확하게 명시하도록 제안했습니다.
지만 여전히 문자열 복사나 문자열 입력 등의 다양한 함수에서 개발자가 선언한 버퍼의 크기를 표준 라이브러리 함수에서 전달받지 않아 버퍼 오버 플로우 문제점이 남아있었죠.
 
 C11 표준에서는 다양한 버퍼 오버 플로우 문제가 있는 함수들을 버퍼의 크기를 입력 인자로 전달하게 수정하였습니다.
그리고 표준 라이브러리 내부에서 동적으로 개체를 만들어 포인터를 반환하는 함수를 포인터의 주소를 입력 인자로 전달받고 내부적으로 문제가 있을 때 에러 형식 값을 반환하게 수정하였습니다.
또한 asctime처럼 함수 내부에서 수행한 결과가 있는 메모리 주소를 반환하는 함수 중에 언제나 같은 주소를 반환하여 두 번 이상 호출했을 때 마지막 호출한 결과만 확인할 수 있었던 함수들도 포인터의 주소를 입력 인자로 전달하며 표준 라이브러리 함수 내부에서 값을 설정하고 문제가 있을 때 에러 형식 값을 전달하게 수정하였습니다.
 
여기에서는 C99 C11 표준을 포함하여 다양한 표준 라이브러리 함수들의 사용법을 소개할 것입니다
이 글은 단순한 문법을 전달하기 보다 표준 라이브러리 함수가 어떠한 역할을 하고 어떻게 사용하는지에 초점을 맞출 것입니다.
이를 통해 보다 효과적으로 C언어로 프로그래밍할 수 있기를 기대합니다. 


assert.h   논리적 모순이 있는지 판단하는 assert 매크로를 제공합니다.
complex.h  복소수의 연산에 사용하는 여러 함수와 매크로를 제공합니다.
ctype.h  분류 및 매핑에 유용한 여러 함수를 제공합니다.
errno.h  오류 보고에 관한 다양한 매크로를 제공합니다.
fenv.h  부동 소수점 환경을 접근하는 다양한 함수와 매크로를 제공합니다.
float.h  표준 부동 소수점 인자들의 제한에 관한 매크로를 제공
inttypes.h  <stdint.h>를 포함하고 이를 확장합니다.
iso646.h  11개의 논리, 비트 연산 매크로를 정의합니다.
limits.h  정수형 타입을 포함하여 다양한 한계를 정의합니다.
locale.h  지역 설정에 관한 함수와 타입, 매크로를 제공합니다.
math.h  수치 계산에 관한 다양한 함수와 매크로를 제공합니다.
setjmp.h 지역을 벗어난 분기를 위한 함수와 타입을 제공합니다.
signal.h 다양한 신호를 처리하기 위한 함수와 매크로를 제공합니다.
stdarg.h 함수에 전달할 알려지지 않은 인자 형식을 위한 타입과 매크로를 제공합니다.
stdbool.h Boolen에 관한 매크로를 제공합니다.
stddef.h 표준 타입과 매크로를 제공합니다.
stdint.h 지정한 폭의 정수 형식의 집합을 선언하고 관련 매크로를 제공합니다.
stdio.h 표준 입출력에 관한 다양한 함수와 매크로 등을 제공합니다.
stdlib.h 일반적으로 사용하는 다양한 함수와 매크로 등을 제공합니다.
string.h char 형식의 배열에 관한 다양한 함수와 매크로 등을 제공합니다.
tgmath.h <math.h> <complex.h>를 포함하고 제네릭 매크로를 제공합니다.
time.h 시각을 제어하는 다양한 함수와 매크로 등을 제공합니다.
wchar.h wchar_t 형식에 관한 다양한 함수와 매크로 등을 제공합니다.
wctype.h whcar_t 형식 관련한 분류 및 매핑에 유용한 여러 함수를 제공합니다. 



앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 

2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.
 

 

 

반응형