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 과 같은 함수들도 접근&사용이 가능해집니다.
728x90
728x90
'Dev > [C]' 카테고리의 다른 글
[개탱][C][전처리(preprocessor directives)][헤더파일 중복선언 방지] (0) | 2018.01.02 |
---|---|
[개탱][C][변수 읽는법][Pointer][Double Pointer][함수 포인터][더블 포인터][포인터] (0) | 2018.01.02 |
[개탱][C][typedef][Typedef Struct ][사용자 정의 구조체] (0) | 2018.01.02 |
[개탱][C][구조체] (0) | 2018.01.02 |
[개탱][C][선언과 정의][메모리] (0) | 2018.01.02 |