본문 바로가기
OLD/[C]정리중

[개탱][C][분리 컴파일[Separate compilation]]

by 개탱 2018. 1. 2.
728x90

분리 컴파일[Separate compilation]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include<cstdio>
#include<cstring>
 
typedef struct stack
{
    int s[100];
    int top;
}STACK; // 이것은 구조체를 선언한 것. 정의X 선언O
// 선언 :: declaration
// 정의 :: definition
 
void push(STACK* s, int data);
int pop(STACK* s);
int main(){
 
    STACK s1;
    STACK s2;
    s1.top = -1;
    s2.top = -1;
 
    push(&s1,100);
    push(&s1,200);
    push(&s1,300);
    int x = pop(&s1);
    x = pop(&s1);
    push(&s1,400);
    x = pop(&s1);
    x = pop(&s1);
 
    printf(" x  = %d\n",x);
 
    push(&s2,10);
    push(&s2,20);
    x = pop(&s2);
    printf(" x = %d\n",x);
 
void push(STACK *s, int data){
    s->top = s->top+1;
    s->s[s->top] = data;
}
int pop(STACK *s){
    s->top = s->top -1;
    return s->s[s->top+1];
}
cs


이렇게 하나의 소스파일에 줄줄이 다 쓰면 코드가 너무 길어지고

현재는 짧아서 상관없지만 

엄청 긴 코드를 혼자 짤 것이 아닌 여러명이서 프로젝트를 진행하려 할 때

한명이 다하고 기다리고.. 또 기다리고.. 이렇게 매우 비효율적으로 진행이 됩니다.



그래서 나온게 분리 컴파일.

 

위 사진과 같이 struct 를 stack.h 라는 헤더파일로 따로 빼놓고.



 


위와 같이 stack 에 필요한 함수들을 stack.cpp 라는 파일을 만들어 생성을 해준뒤 Main 에서 사용하기 위하여




와 같이 전방 선언을 해주어야하지만 stack 과 관련된 함수를 main 에서만 사용하는게 아닌 다른곳에서도 사용할수 있으므로 


 


와 같이 헤더파일에 정의를 해줍니다.


// stack.h안의 STACK 구조체를 사용하는 사용자 정의 함수들은 stack.h 안에 전방선언을 해줌으로서 사람들이 확인하기도 편하고 자주 사용되는 관습임. 어차피 stack 을 사용하는 함수들은 STACK 구조체를 사용하기때문에 같이 선언&정의해주면 편함.!


그 뒤 헤더파일의 중복선언을 방지하기위해서

http://gaetaeng.tistory.com/22



그뒤 Main.cpp 에

 


와 같이 STACK 라는 구조체타입과 push, pop 과 같은 함수들도 접근&사용이 가능해집니다.

댓글