C 언어의 개요
-
주요 용어
- compiler : 작성된 프로그램을 기계어로 변환해주는 번역기.
- source code : 프로그램 안에 있는 명령어.
- object file(목적파일) : .obj 확장자를 갖는 팡일로 기계어들의 집합으로 이루어진 파일.
- linker(링커) : 여러 목적파일과 라이브러리 파일을 연결해 주는 도구.
- reserved word(예약어) : C 언어에 미리 정의되어 있는 단어.
C 언어의 정의, 역사, 특징
C언어의 정의
- 프로그래밍 언어
- 사람과 컴파일러(compiler)가 이해할 수 있도록 약속된 형태의 언어.
Compiler
- 프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있도록 기계어로 번역해 주는 번역기.
- 어셈블러(assembler) : 기호로 표현된 어셈블리 코드를 기계어로 번역하는 번역기.
- 인터프리터(interpreter)
- 소스 프로그램을 한번에 기계어로 변환시키는 컴파일러와는 달리,
프로그램을 한 단계씩 기계어로 해석하여 실행하는 '언어처리 프로그램'
- 소스 프로그램을 한번에 기계어로 변환시키는 컴파일러와는 달리,
C언어의 역사
- Denis Ritchie (1972)
- Unix 운영체제 구현에 사용할 목적으로 개발.
- 컴퓨터 기종간 호환성을 가진 고급이면서, 하드웨어를 제어할 수 있는 새로운 언어가 필요함.
- 어셈블리 언어로 된 UNIX 운영체제가 거의 C 언어로 대체됨.
C 언어의 특징
- 프로그램 이식성이 높음.
- 간단한 문법 표현으로 함축적인 프로그램 작성이 가능.
- 저급언어 특성을 가진 고급언어.
C 프로그램 작성 및 준비
프로그램 개발 단계
일반적인 프로그램 개발
- 프로그램 목적 정의.
- 요구 분석과 시스템 분석을 통하여 프로그램이 가져야 할 기능 정의.
- 프로그램 설계.
- 분석된 기능을 처리할 수 있도록 프로그램 구조 설계.
- 소스코드 작성.
- 작성된 프로그램 설계를 기반으로 에디터를 사용하여 작성.
- 컴파일 / 링크.
- 소스코드를 실행 가능한 코드로 변환하고 문법 검사.
- 프로그램 실행.
- 프로그램 실행.
- 테스트와 디버깅.
- 에러를 검사하고 디버깅.
- 유지 보수.
- 사용 중 발생 되는 에러나 추가적인 변경사항을 처리.
C 프로그램을 작성한다면
에디터와 컴파일러가 필요함
- 에디터 : 소스코드를 작성하여 저장할 수 있도록 도와주는 도구.
- C 컴파일러 : Turbo C/C++, Dev-C++, Visual C++, GCC, ...
C 프로그램의 완성 과정
코딩 -> 컴파일 -> 링킹
- 코딩.
- 주어진 문제에 대한 설계를 바탕으로 소스코드(source code)를 작성하여 소스파일(source file)을 생상하는 과정.
- 컴파일(compile) 단계.
- 소스파일이 목적파일(object file)로 변환되는 과정.
- 링킹(linking) 단계.
- 목적 파일을 실행파일(execution file)로 변환하는 과정.
\
소스파일의 생성
실행 파일의 생성(링킹 과정)
실제로는 컴파일 후, 링킹 과정을 거쳐 실행 파일이 나옴.
다만 링킹 과정을 거친다는 사실은 인지하고 있어야 함.
C 프로그램의 구성
C 개발을 할 때, 기본적인 틀을 만들어 사용 해야 함.
기본적인 C의 틀을 알아보자.
C 프로그램의 구조
// 도입부 : 프로그램 전체에 적용되는 사항을 기술.
/* C 프로그램 구조의 예*/
#include<stdio.h>
int add(int x, int y);
// --------------------------------- //
// main()는 가장 먼저 호출되는 함수로서 모든 프로그램에 반드시 존재함.
void main() {
// 선언문
// 치환문
// 제어문
// 함수 호출
}
// --------------------------------- //
// main()에서 호출되는 함수에 대한 정의
호출될 함수() {
//
}
- C 프로그램은 반드시 하나 이상의 함수를 포함해야 한다.
- main()가 반드시 존재해야 한다.
- 함수의 시작과 끝을 알리는 {}를 사용해야 한다.
- 중괄호 안에는 변수 선언문, 치환문, 연산문, 함수 등의 명령을 기입한다.
- 선행처리기(proprocessor)를 제외하고 문장의 끝에는 세미콜론을 붙인다.
C 프로그램의 구성 요소
- 예약어(reserved)
- 자료형 : char, int, float, short, long, double, unsigned, union, enum, void, ...
- 기억 : auto, static, extern, register, ...
- 제어 : if
else, for, while, dowhile, wditch~case, break, continue, return, ... - 기타 : main, sizeof, include, ...
- 명칭(idnetifier) : 변수, 배열, 함수, ... 등의 이름
- 규칙
- 영문자, 숫자의 조합.
- 명칭의 첫 문자는 영문자나 _ 이어야 함.
- _이외의 특수문자 사용 X.
- 문자 사이에 공백 X.
- 예약어 사용 X.
- 대소문자는 구별하여 사용.
- 명칭의 길이는 컴파일러에 다라 차이가 있음. (일반적으로 32자)
- 규칙
- 상수 : 값이 불변인 자료.
- 연산자 : =, -, *, /, ++, ...
- 다른 언어에 비해 연산자가 많음.
- 설명문 : 프로그램에 대한 주석.
- /**/, //
에러와 경고
에러
- C 언어의 문법상 잘못된 경우 에러.
- C 언어 문법에 맞지 않은 형식의 사용이나, 반드시 필요한 지정이 빠진 경우 발생.
- 에러 메세지를 확인하여 반드시 수정해야 함.
경고
- 경미한 실수.
- 큰 문제는 없지만, 이식성에 문제가 생기거나, C 언어 문법에서 권장하지 않은 방법으로 소스를 작성했을때 경고.
- 무시해도 상관 없음.
'Language > C' 카테고리의 다른 글
[C] 함수와 기억 클래스 - 1 (0) | 2020.12.20 |
---|---|
[C] 선택 제어문과 반복 제어문 (0) | 2020.12.20 |
[C] 입출력 함수와 연산자 - 2 (0) | 2020.12.20 |
[C] 입출력 함수와 연산자 - 1 (0) | 2020.12.15 |
[C] 자료형과 선행 처리기 (0) | 2020.12.14 |