본문 바로가기

Architecture for Software/C and C++

(6)
Eclipse 3.4 (CDT)와 Cygwin으로 C/C++ 개발환경 설정하기 최근 정말 재미있는 책을 하나 읽고 있습니다. 바로 Short Coding이란 책입니다. 천천히 읽고 있는 관계로 독서평은 나중에 올리구요~ Short Coding을 하기 위한 환경을 Eclipse 3.4 CDT와 Cygwin으로 설정하였습니다. 아시다시피 Eclipse는 C/C++에도 막강한 기능을 발휘하는 툴이라고 생각합니다. 특히 gcc 컴파일러가 여러모로 추천되더군요~ 제가 특정한 플랫폼을 타켓으로한 C/C++ 어플리케이션을 개발하려는 것이 아니고 Short Coding 에 나오는 예제들을 중심으로 확인하려는 것이 가장 큰 목적이므로 별다른 고민없이 구축하였습니다. 특히 GCC를 사용할 수 있다는 큰 장점이 있습니다. Step by Step으로 확인해 보겠습니다. 1. Cygwin 설치 첫번째로 ..
Pointer 의 선언 Pointer의 선언은 다음과 같은 방식을 통하여 이루어 진다. int *a; *a는 정수 타입이라는 결과를 나타낸다. * 연산자가 '간접지정 연산자'라는 것을 알고 있다면 a가 정수를 가리키는 포인터라는 것도 알 수 있을 것이다. 간접지정 연산자는 포인터 값에서만 유효하다. 포인터는 결과를 가리키고, 간접지정 연산자는 결과를 얻는 포인터를 '따라'간다. C언어의 형식이 자유롭기 때문에 다음과 같이 타입 바로 뒤에 *를 사용할 수 있다. int* a; 이런 형식의 선언은 위에서 보았던 선언과 동일한 의미이면서도 a가 int 타입이라는 것을 더욱 더 분명하게 나타내준다. 그러나 이런 스타일의 선언은 좋지 않다. 다음 예를 보면 그 이유를 더욱 분명하게 알 수 있다. int* b, c, d; 보통 이러한 선..
C 언어의 문자열 리터럴(String Literal) 평소 C나 C++는 자주 사용하지 않지만 간혹 사용할 경우가 많아서 최근 개념을 다잡고자 "Pointers on C"라는 책을 읽고 있습니다. Java의 경우 String이 지원되지만 C에서는 문자열 타입은 존재하지 않는다. 하지만 문자열 리터럴(String Literal)은 존재한다. 리터럴(Literal)이란 소스코드를 컴파일 할 경우 정의되어 있는 내용을 그대로 정확하게 해석할 수 있어야 하는 값이다. 만약 소스코드에 int x = 12; 라고 정의하였다면 "x"는 변수이며 "12"가 리터럴이다. 중요한 것은 리터럴은 명칭이 아니고 값 그 자체를 의미한다. char *message = "Hello World"; 여기서 "Hello World"가 리터럴이 된다. 문자열이나 숫자와 같은 값들이 모두 리..
C / C++ 컴파일 과정(Compilation Process) 평소 C나 C++는 자주 사용하지 않지만 간혹 사용할 경우가 많아서 최근 개념을 다잡고자 "Pointers on C"라는 책을 읽고 있습니다. 컴파일 과정은 학부때 거의 다 배워서 잘 알고 있는 내용이긴 하지만 책을 보면서 다시한번 정리하고 싶었다. 일반적인 C나 C++의 컴파일 과정을 보여줍니다. 상기 그림은 Visual C++와 같이 Windows GUI를 포함하여야 하는 경우에 컴파일 과정입니다. 특이하게도 Resource Compiler가 같이 있는데, Resource Compiler는 아이콘이나 다이얼로그 박스 및 다른 그래픽 객체 등을 Compiled Resource Files로 Linker에 링킹시킵니다. 이를 통하여 각종 Event-Driven Model에 필요한 GUI를 사용자에게 제공할..
ANSI C 호환 컴파일러의 환경에 대하여 평소 C나 C++는 자주 사용하지 않지만 간혹 사용할 경우가 많아서 최근 개념을 다잡고자 "Pointers on C"라는 책을 읽고 있습니다. 책 내용중 기본 개념에 해당하는 ANSI C 호환 컴파일러의 환경에 대한 좋은 글이 있어서 올립니다. 모든 ANSI C 호환 컴파일러는 두개의 서로 다른 환경(Environment)이 존재한다. 1. 번역 환경 (Translation Environment): 소스코드를 실행 가능한 기계어로 번역하는 환경 2. 실행 환경 (Execution Environment): 코드를 실제로 실행하는 환경 이 두 환경은 모두 하나의 동일한 컴퓨터에 존재할 필요가 없다. 특히 다른 CPU나 운영체제를 사용하는 경우 번역환경과 실행 환경은 서로 상이할 수 있다. 예를 들어 Wind..
C에서 사용되는 형식 지정자 C 프로그래밍은 자주 하지 않기 때문에 간혹 형식 지정자가 생각나지 않을 경우가 많다. 간단하게 "Pointers on C"책에 있는 내용을 토대로 형식 지정자를 정리하였다. 1. printf에서 사용하는 형식 지정자 형식 의미 %d 10 진수 출력 %o 8 진수 출력 %x 16 진수 출력 %g 부동소수점 수 출력 %c 문자 출력 %s 문자열 출력 \n 개행 문자 출력 2. scanf에서 사용되는 형식 지정자 형식 의미 변수 형식 %d 정수값을 읽는다. int %ld long 타입 정수를 읽는다. long %f 부동소수점 수를 읽는다. float %lf double 타입 실수값을 읽는다. double %c 문자를 읽는다. char %s 입력으로부터 문자열을 읽는다. char arrary