공학박사 권경안

ANSI C와 기존 C의 차이점 (2025년 업데이트) 본문

Programming

ANSI C와 기존 C의 차이점 (2025년 업데이트)

Karl Kwon 2009. 4. 2. 19:25

ANSI C와 기존 C의 차이점

C 언어는 1970년대에 개발된 이후 널리 사용되어 왔으며, 1989년 ANSI(미국표준협회)에서 공식 표준으로 제정되면서 ANSI C (또는 C89) 라는 이름으로 정리되었습니다. 이후 ISO에서도 거의 동일한 내용으로 채택되면서 C90이라고도 불립니다.

기존의 '전통적인 C (K&R C)'와 ANSI C의 차이점을 요약하면 다음과 같습니다:


주요 변경 사항

1. 함수 선언 방식 변경

기존 C에서는 함수 선언 없이 호출해도 문제가 없었지만,
ANSI C에서는 함수 호출 전에 반드시 함수 원형(prototype)을 선언해야 합니다.
이는 컴파일 타임에서 타입 불일치 등을 미리 검출할 수 있게 해줍니다.

// ANSI C 스타일 함수 선언
int add(int a, int b);

2. 새로운 자료형 도입

  • void: 반환값이 없는 함수나 타입 없는 포인터를 명확하게 표현할 수 있게 되었습니다.
  • enum: 열거형 자료형이 정식으로 도입되어 가독성과 유지보수성이 향상되었습니다.

3. 표준 라이브러리 명확화

기존 C에서 헤더 파일은 시스템마다 차이가 있었지만,
ANSI C에서는 표준 라이브러리 함수들이 정식 헤더로 분리되어 정의되었습니다.

예: <stdio.h>, <stdlib.h>, <string.h>


4. 전처리기(Preprocessor) 기능 강화

ANSI C에서는 다음과 같은 전처리기 지시문이 추가되었습니다:

  • #elif: 조건 분기를 보다 간결하게 표현 가능
  • #error: 사용자 정의 컴파일 오류 메시지 출력
  • #pragma: 컴파일러 특수 명령 지정

5. 구조체의 대입 및 함수 전달 가능

기존 C에서는 구조체(struct)를 함수에 직접 전달하거나 반환하는 것이 불가능했지만,
ANSI C에서는 구조체를 값으로 복사하거나 함수 인수/반환값으로 사용하는 것이 가능합니다.