티스토리 뷰

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022)

3.1 C 언어 요약

C 프로그램 구성

- 여러 개의 .c 파일로 구성

- 함수 외부에서 전역 변수(global variable)를 선언 가능, 전역 변수는 프로그램 내에 어디서나 사용 가능

 

이차원 배열

자료형 배열명[N][M] : 크기가 N X M인 이차원 배열 선언

 

포인터와 포인터 변수

포인터 : 메모리 공간의 주소

포인터 상수 : 메모리 주소 값

포인터 변수 : 주소 값(포인터)을 저장할 수 있는 변수로 다른 메모리 공간을 가리킴

 

- *p는 포인터 p가 가리키는 곳을 따라가 데이터가 저장도니 공간 참조 <- 주소참조(dereferencing)

 

배열과 포인터

배열 이름은 실제로는 배열의 시작주소를 나타내는 상수 즉 포인터 상수임

- p[1]은 *(p+1)과 동일

 

문자열과 포인터

char *변수명 = "문자열";

- char 포인터 변수는 문자열을 가리킴

 

여러 개의 문자열 저장

문자형의 이차원 배열

char colors[3][10] = {"red", "blue", "white"};​

 

포인터 배열

char *ptr[3] = {"red", "cian", "black"};

 

포인터의 포인터

- 포인터의 대상이 char 포인터인 포인터 변수 사용 가능

- char 포인터의 포인터 변수 p는 포인터 배열 ptr의 시작 주소를 대입해 포인터 배열 ptr을 가리킬 수 있음

 

구조체

구조체 선언 방법

 

3.2 C 컴파일러

단일 모듈 프로그램 컴파일

gcc [-옵션] 파일 : C 프로그램 컴파일

-c : 목적 파일 생성, 목적 파일은 컴파일은 되었지만 링크되지 않아 실행될 수 없는 파일

-o : 실행 파일 이름을 지정하여 만들 수 잇음

-s : 어셈블리어 프로그램 파일 생성 가능

-l : 특정 라이브러리 링크

 

다중 모듈 프로그램

- 단일 모듈 프로그램의 문제점은 코드의 재사용이 어렵고, 여러 사람이 참여하는 프로그램 어렵다는 것

 

- 위 문제점을 해결하기 위해 위 그림과 같이 여러 개의 .c 파일들로 이루어진 다중 모듈 C 프로그램을 작성할 수 있음

재사용할 수 있는 함수를 준비하기 위해서는 

(1) 함수의 소스 코드를 포함하는 소스 코드 파일과

(2) 함수의 프로토타입을 포함하는 헤더 파일을 함께 작성

 

다중 모듈 프로그램 컴파일

gcc의 -c 옵션을 사용할 수 있음

 

3.3 자동 빌드 도구

make 시스템

- 많은 파일로 구성된 다중 모듈 프로그램을 빌드하는 작업은 번거로움

make  : make 시스템은 메이크파일을 이용하여 실행 파일을 빌드

 

메이크파일

- 일반적으로 makefile이라는 이름으로 만듬

 

3.4 gdb 디버거

gdb 사용

- breakpoint 설정

- 한 줄씩 실행

- 변수 접근 및 수정

- 함수 탐색

- 추적 (tracing)

gdb 실행파일 : gdb 디버거는 실행파일을 이용해 디버깅 모드로 실행

 

gdb 기능

소스보기 : l

정지점 : b, clear, d

프로그램 수행 : r, k n, s

변수 값 프린트 : p

종료 : q\

 

 

3.5 이클립스 통합개발환경

C/C++ 개발자를 위한 리눅스용 이클립스

 

Comments