1.9 식별자와 예약어    [DOC]    [SMTS]

 식별자(identifier)는 변수나 함수 등의 이름을 지정할 때 사용된다. C언어에서사용되는 식별자를 만드는 데에는 다음과 같은 제약 사항이 있다.


❶ 알파벳 대소문자(a, b, …, z, A, B, …, Z), 숫자(0,1,2, …9), 밑줄(_)을 조합하여 만든다.

❷ 숫자로 시작해서는 안 된다.

❸ 예약어(keyword)는 식별자로 쓸 수 없다.


특수문자로는 유일하게 밑줄(_)문자가 식별자를 만드는데 사용이 되며 이외의 다른 특수문자는 식별자롤 사용할 수 없다. 아래의 예는 올바른 식별자이다.


ia  dbase  cStatus  iMotor10  i_AVR_Name  _reg  _123  For

아래의 예는 올바르지 않은 식별자이다.


123a  A$Bc  %pi  if

 한 가지 주의할 점은 C언어에서는 식별자를 사용할 때 대소문자를 구별한다는 점이다. 즉 다음 네 개의 식별자들은 모두 서로 다른 것으로 구별된다.


ab  Ab  aB  AB

이러한 특징은 거의 대부분의 프로그래밍 언어들에 있어서 공통적으로 해당된다.


 예약어(reserved word, keyword)라는 것은 C언어에서 미리 사용하겠다고 지정되어진 단어로서 식별자로 사용할 수 없는 단어들을 말한다. 몇 가지 예를 표 1.8.1에 기술하였다.


표 1.9.1 C언어의 예약어들

분류

예시

자료형 관련

void, char, int, short, long, float, double, signed, unsigned, enum, struct, union, volatile, static, const, extern, register, auto, sizeof, typedef 등

제어 명령 관련

if, else, for, do, while, switch, case, continue, break, goto, default, return 등

전처리 관련

define, include 등

이 예약어들은 식별자(즉 변수명이나 함수명)로 사용할 수 없으므로 필히 알고 있어야 하지만 C프로그램을 작성하는 경험이 많아지면 자연스럽게 알게 되고, 혹시 실수로 예약어를 변수명이나 함수명으로 사용한다 해도 컴파일러에서 에러를 발생시켜 주므로 크게 걱정할 필요는 없을 것이다.



Posted by 살레시오
,

 C/C++을 실습할 수 있는 도구는 매우 종류가 다양한데 유료인 것도 있고 무료로 사용할 수 있는 것들도 많이 있다. 본 교재에서는 무료로 사용할 수 있는 것들 중 “CodeLite” 이라는 오픈소스(open source) IDE를 사용하도록 하겠다. CodeLite은 무료로 사용할 수 있다는 장점과 윈도우즈와 OS X 뿐만 아니라 리눅스에서도 동일한 환경으로 사용 가능하다. 그리고 C/C++ 언어오에 PHP로도 개발할 수 있으므로 C언어에 어느 정도 익숙해진 후 C++로 넘어갈 때에도 동일한 환경에서 같이 실습할 수 있다는 장점도 가지고 있다. 따라서 학생들이 C/C++언어 실습을 하기에 유용한 툴이라고 개인적으로 생각되어 본 포스트에서는 이것의 간략한 사용법에 대해서 설명하도록 하겠다.

 설치 프로그램은 홈페이지(www.codelite.org)에서 다운로드받을 수 있으며 검색엔진에서 ‘codelite’라고 검색하면 쉽게 찾아갈 수 있다.

[그림 1] codelite IDE의 외형

 codelite를 설치한 후 C/C++프로그램을 작성하는 방법을 간략히 소개하면 다음과 같다. 먼저 File>New>Project 를 선택한다. 그러면 새로운 프로젝트를 생성할 수 있는 대화상자가 나타난다. '프로젝트(project)'라는 것은 하나의 C/C++ 프로그램이 여러 개의 파일들로 분산되어 있는 경우에 그 파일들을 하나로 묶어서 관리하는 단위를 나타낸다. 프로그램이 길어질 때는 하나의 화일에 모든 소스코드를 담는 것이 아니라 여러 개의 화일에 분산시켜서 관리하는 것이 일반적인데 이는 여러 명이 하나의 프로그램을 작성할 때 효율적이기도 하다.


[그림 2] 새로운 프록젝트를 생성하는 메뉴

이 [그림 2]와 같이 File>New>New Project 메뉴를 선택하거나 시작화면에서 New Projcet 항목을 선택하면 새로운 프로젝트를 생성할 수 있다.

 이후에 이 창에서 C 언어의 경우  'Simple executable (gcc)' 항목을 선택한 후 (C++은 'Simple executable (g++)') 프로젝트 이름을 기입하면 Project path에 지정된 폴더 하위에 입력한 프로젝트 이름으로 새로운 폴더가 생성되고 이후에 모든 파일들은 그 폴더 안에서 생성되고 관리된다.

[그림 3] 생성할 프로젝트의 종류를 선택하는 창


[그림 4] 프로젝트으 이름과 경로를 선택하는 창

[그림 5] 새로운 프로젝트가 만들어진 후 자동으로 생성된 프로그램


생성된 프로젝트의 src폴더에 보면 main()함수가 포함된 화일명이 main.c로 자동으로 만들어진다.지정한다. 이제 단축키 [ctrl]+[f5]를 누르면 프로젝트가 컴파일 된 후 실행이 되고 콘솔창에서 그 결과를 확인할 수 있다.

 자동으로 생성되는 프로그램(C/C++의 경우)은 다음과 같다. C 프로그램은 src폴더 밑에 main.c 파일에, C++의 경우 main.cpp 파일이 생성된다.


#include <stdio.h>
int main(int argc, char **argv)
{
   printf("hello world\n");
   return 0;
}


다른 부분은 나중에 이해하더라도 일단 printf()함수는 표준 출력(standard output)으로 입력된 문자열을 내보내는 기능을 수행한다는 것은 알아두자. 일단 현 단계에서 표준 출력은 디스플레이 장치(모니터)라고 이해하여도 된다. 이 프로그램을 실행하면 “hello world”라는 문자열이 화면에 표시될 것이다. 이것을 바꿔서 자신의 영문 이름이 화면에 표시되도록 해보자.



Posted by 살레시오
,

1.5 C언어의 표준안들    [DOC]    [SMTS]

 여기에서는 C언어의 국제 표준안들에 대해서 간략히 알아보도록 하겠다.

1.5.1 ANSI C 혹은 C89

 C 언어가 처음으로 만들어진 것은 1970년대초이고 이후 다양한 분야에서 다양한 사람들에 의해 사용되고 또 발전했다, 서로 다른 집단에 의해 변형된 C 언어가 어느 정도 같은 틀을 공유한다고 해도 1980년대에 들어서면서 다양한 C 언어들이 독자적으로 지원하는 확장 기술은 서로 호환되지 않게 되었다. 또한 C 언어가 미국 정부 프로젝트를 위해 사용되기 시작하면서 미국의 표준화 기구인 ANSI에 의해 1980년대 초반에 표준화를 시작되게 된다. 이후에 1989년도에 탄생한 C언어 표준이 지금까지 C언어 서적에서 인용되고 있는 ANSI C(정확히는 ANSI X3.159-1989)이다. 발표된 연도를 이용해서 줄여서 C89라고 불리기도 한다. 1990년도에는 국제 표준화 기구인 ISO가 몇 가지 형식부분만을 바꿔 ISO표준을 발표했고 이를 C90이라고 부르는데 결국 C89와 같은 것이다. ANSI C는 대부분의 컴파일러가 지원한다.

1.5.2 C99

 ANSI의 표준화 이후 C 언어 표준이 상대적으로 정적으로 남아 있었던 동안, C++는 표준화를 위하여 계속 진화하고 있었다. 1995년에 1990년의 C 표준에 대한 규약 수정안 1이 출판되었는데, 이는 약간의 세부 사항을 교정하고 국제적 문자 세트에 대한 보다 확장된 지원을 위한 것이었다. C 표준은 1990년대 후반에 더 개정되어, 1999년 ISO/IEC 9899:1999가 출간되었고, 여기서 명시한 규범을 흔히 C99라 부른다. 몇몇 추가점들을 기술하면 다음과 같다. (http://ko.wikipedia.org/wiki/C99 참조)


  • 인라인(inline) 함수의 지원.

  • 변수의 선언은 더 이상 파일 범위나 복합 명령어의 시작에서만 할 필요가 없음.

  • long long int, 선택적인 확장 정수형, 명시적 불린 자료형, 그리고 복소수를 나타내기 위한 complex 자료형 등 새로운 자료형 도입.

  • 가변 길이 배열(VLA: variable-length array) 지원.

  • // 으로 시작하는 한 줄 주석 지원.

  • IEEE 부동소수점 자료에 대한 개선된 지원.


 본 교재는 바로 이 C99를 기준으로 하여 문법을 설명한다.

1.5.3 C11

 C11은 ISO/IEC 9899:2011의 줄임말로 C 언어의 최신 개정된 표준을 의미한다. 이전까지 표준이던 C99의 후속으로 최종안이 2011년 4월에 제출되었고 검토를 거쳐 2011년 12월 8일에 최종 승인되었다. GCC 4.6, Clang 3.1, IBM XL C 12.1, MSVC 18 등이 C11의 일부 기능을 지원한다.


Posted by 살레시오
,