먼저
A.H 의 내용입니다.
#ifndef _H_
#define _H_

#include <iostream>
using namespace std;
class Linked
{
private:
        int data;
        Linked* next;
public:
        Linked(int dat){data = dat;} //인라인 정의.
        Linked(){this->next = NULL;}
        void Insert(Linked* Data);
        
};
Linked Head;

#endif
------------------------------------------------------------------------------------
B.cpp 의 내용입니다.
#include "Linked.h"

void Linked::Insert(Linked* Data)
{
        //
        Linked* tmpdata = new Linked;
        .................
}        
------------------------------------------------------------------------------------------
C.cpp 의 내용입니다.
#include "Linked.h"


int main()
{
        Linked A;
        
        return 0;
        
}
============================================================================================
이걸 컴파일 하면 링크에러가 납니다.

에러가 나는 이유가 무엇일까요?

C.cpp 에서 #include "Linked.h" 문장을 지우면 제대로 됩니다.

해결 방법을 찾는게 아니고...

이게 왜 에러가 나는걸까요?

분명 해더파일엔 #ifndef ~#endif 으로 중복 선언 방지를 했는데도요...