C 언어는 프로그래밍 언어 중 하나로, 1972년 'UNIX'를 구현하기 위해 미국 벨 연구소의 'Dennis Ritchie'가 시스템 기술용 언어로 개발했습니다. 당시의 UNIX는 'assembly' 언어로 만들어졌는데, 하드웨어 의존도가 높은 탓에 컴퓨터 기종마다 프로그램을 다시 작성해야하는 호환성 문제가 있어, 기종 간 호환성 문제 해결을 위해 high level이면서도 assembly 만큼의 하드웨어 제어가 가능한 언어가 필요했고, 그에 따라 C가 탄생하게 되었습니다.
C는 수많은 언어의 탄생과 소멸 사이에서도 높은 점유율을 유지하며 살아남고 있습니다. 탄생 배경에서 보듯, C는 하드웨어 제어가 가능하고, 프로그램 이식성이 높으며, assembly를 대체한 언어인 만큼 저급 언어의 특성을 가진 고급 언어인 것 입니다.
C는 간결하면서도 뛰어난 성능을 가져, 표준 C의 필요성에 따라 1990년대 초 미국의 표준화 기구 ANSI(American Standard Institute)에 의해 'ANSI C'가 발표되었습니다. 현재는 국제 표준화 기구 ISO(International Standardization Organization)를 중심으로 C의 표준화가 진행되고있으며, ISO에서 1990년에 발표한 표준 C를 'C90', 1999년에 개정해 발표한 표준 C를 'C99'라고 합니다.
Coding - Compile - Linking - Execute
※ C에서 소스 코드 작성시 반드시 'main 함수'가 존재해야합니다.
그리고 모든 블록들은 '중괄호({})'로 이루어지며,
선행처리기(preprocessor)가 처리하는 명령을 제외한 모든 문장은
'세미콜론(;)'으로 끝나야합니다.
※ 이때 '컴파일러'가 사람이 작성한 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환시켜주는데, 정확히는 기계어가 아닌 '기계어에 가까운 어셈블리 코드'로 변환시켜주고, 이후 '어셈블러'가 이 코드를 '기계어(0과 1로 된 binary 코드)'로 변환시켜줍니다.
※ 컴파일러의 종류로는 'Linux'에서 주로 사용하는 'gcc', 'Windows'의 'Dev-C++', 'Visual Studio' 등이 있습니다.
※ 이때 '링커'가 목적 파일들을 라이브러리 파일과 연결하여 실행 파일을 만들어주지만, 대부분의 컴파일러가 링커 기능까지 제공하므로 컴파일할 때 자동으로 실행 파일을 생성해 줍니다.
따라서 흔히 사용하는 에디터(IDE)인 'Visual Studio' 등을 사용하면 빌드(컴파일) 명령 하나로 실행 파일까지 생성합니다.
C에서 미리 정의되어 있는 의미를 가진 단어를 '예약어(reserved word)'라고 합니다.
프로그램 작성시 변수명, 배열명, 함수명 등 명칭을 부여해 사용하게되는데, 명칭 작성시에는 정해진 규칙에 따라야합니다.
C에서 사용되는 상수(constant)는 '수치 상수', '문자 상수', '문자열 상수'가 있습니다.
C에서 각종 연산을 수행할 때 '연산자(operator)'를 이용하여 각종 연산을 수행합니다.
에러(error)는 '오탈자', '문법에 맞지 않는 형식 사용', '반드시 필요한 지정이 없는 경우' 처럼 문법상 명백하게 잘못된 경우 발생하며, 컴파일러가 컴파일을 수행할 수 없으므로 에러를 반드시 수정해 주어야 합니다.
경고(warning)는 코드 내용에 문제가 있어보이기는 하지만 컴파일은 가능한 경우와 현재는 큰 문제가 없으나 이식성에 불리하거나 C 문법상 권장하지 않는 부분이 있는 경우 발생합니다. 따라서 에러와 달리 실행은 가능하므로 작성자의 판단에 따라 수정하면된다는 차이가 있습니다.