✅ 목표 (Goal)

✅ 문제가 생기는 예제

#include "horse.h"
#include "donkey.h"

int main() {
    neigh();
    return (0);
}
#ifndef __HORSE_H__
#define __HORSE_H__

#include "donkey.h"

void cluck() { // 따가닥 따가닥 (1) 함수를 추가했다.
}

void neigh() { // 말, 히힝
	hee_haw();
}

#endif
#ifndef __DONKEY_H__ 
#define __DONKEY_H__

#include "horse.h"

//void cluck(); // (1)

void hee_haw() { // 당나귀, 히호 
	cluck(); // horse의 따가닥 따가닥 함수를 호출하자.
}

#endif

image.png

✅ 왜 문제가 있을까?

heehaw()에서 cluck() 함수를 호출하는데,

cluck()함수의 정의가 없기 때문이다.

즉 전방 선언 문제이다.

#line 5 "E:\\\\my_vs\\\\c_training\\\\donkey.h"

// ★★★
void hee_haw() { 
	cluck(); // 여기서 문제가 발생한다!!
}

#line 12 "E:\\\\my_vs\\\\c_training\\\\donkey.h"
#line 5 "E:\\\\my_vs\\\\c_training\\\\horse.h"

void cluck() { 
}

void neigh() { 
	hee_haw();
}

#line 15 "E:\\\\my_vs\\\\c_training\\\\horse.h"
#line 2 "E:\\\\my_vs\\\\c_training\\\\main.c"

int main() {
    neigh();
    return (0);
}