20. 분할 구현 (.h, .cpp)

P4·2023년 6월 14일
0
post-thumbnail

함수를 선언만 하고 뒤에 코드를 쓰는 것의 원리

#include <stdio.h>

int g_i = 0;

void test();

int main(void)
{
    test();

    printf("%d\n", g_i++);
	printf("%d", g_i++);

    return 0;
}

void test() {
    ++g_i;
}

  • 위의껀 잘 되지만 만약 이렇게 쓰면?

  • 컴파일은 되지만 link 단계에서 오류가 뜸

#include <stdio.h>

int g_i = 0;

void test();

int main(void)
{
    test();

    printf("%d\n", g_i++);
	printf("%d", g_i++);

    return 0;
}
  • 앞에 선언한 함수를 엮어주는건 link 단계에서 함

분할 구현 (.h파일과 .cpp파일을 분리해서 구현)

  • 만약 헤더 파일을 이렇게 만들고
#pragma once // 파일 이름 func.h
// #pragma once는 여러번 include 되는 것을 막아준다고 함, 오...

int Add(int a, int b); // 함수의 동작코드는 구현 안하고 선언만 함
  • cpp 파일을 이렇게 만들고 실행하면?
#include <stdio.h>
#include "func.h"

int g_i = 0;

void test();

int main(void)
{
    test();

    printf("%d\n", g_i++);
    printf("%d\n", g_i++);

    int test_value = Add(1, 2);

    printf("%d\n", test_value);

    return 0;
}

void test() {
    ++g_i;
}

int Add(int a, int b) {
    return a + b;
}
  • 선언 없이도 main 함수 이후에 작성된 Add 함수가 잘 실행됨

전체 과정

  • 문법적인 것을 따졌을 때 오류가 없음 --> 그러면 링크단계에서 파일들을 다 확인하고 서로서로 엮어줌 --> 실행파일 생성
profile
지식을 담습니다.

0개의 댓글