이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요;)
각각의 Artist 객체에 SNode를 연결
노드와 데이터를 분리하는 이유: 하나의 노래 당 song 객체는 하나만 존재하고, 여러 플레이리스트에서는 SNode를 통해 Song 객체에 접근하기만 하면 됨
각 노래의 인덱스를 SIZE로 나눠서, 나머지가 동일한 것들끼리 분류하여 각 그룹을 하나의 단방향 연결 리스트로 저장
헤더 파일 -> 어떤 프로그램에 있는 기능을 다른 프로그램에서도 사용할 수 있게 해줌
Linker가 헤더 파일에 정의된 기능들을 main.c에서 실행할 수 있게 연결해줌
헤더 파일에는 prototype을 넣고, 실제 구현은 소스파일(. c)에 넣은 후 main.c에서 헤더 파일을 포함해서 사용
변수의 선언: 컴파일러에게 변수의 존재를 알려줌
변수의 정의: 실제로 메모리를 할당
int i; -> 선언과 정의를 동시에 함
extern int i; -> 변수를 정의하지 않고 오직 선언만.
file2.c : file.h를 include
file.h : extern int global_variable을 통해 변수 선언
file.c : 실제 global_variable이 저장되어있음
하지만, 변수의 공유는 최소화시키는 것이 좋음
file3.h가 prog.c에서 두 번 include 되는 상황.
매크로의 정의, 함수 프로토타입, 외부(extern) 변수의 선언은 중복되어도 상관없지만,
타입(구조체) 정의가 중복되는 건 컴파일러 오류를 야기시킴
#ifndef와 #endif로 헤더 파일을 둘러싸서 중복 정의를 방지
main.c <-- string.h --> string.c
string.c는 string.h에 정의된 함수의 prototype에 함수를 구현하고,
main.c는 string.c를 통해 기능이 구현된 string.h를 include해서 string.h의 함수들을 사용할 수 있음
'Information Technology > C' 카테고리의 다른 글
[C언어] MP3 관리 프로그램(3) (0) | 2020.01.29 |
---|---|
[C언어] MP3 관리 프로그램(2) (0) | 2020.01.29 |
[C언어] 이중 연결 리스트 (0) | 2020.01.20 |
[C언어] 연결리스트 - 다항식(3) (0) | 2020.01.18 |
[C언어] 연결리스트 - 다항식(2) (0) | 2020.01.13 |