• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

헤더 파일 충돌문제

22.05.27 14:53 작성 조회수 475

0

 
 
 
 
 
test.cpp파일과 mainChapter1_24.cpp파일에 각각 header.h를 include 하니까 문제가 발생하네요 하나씩만 include 하면 문제가 안생기는데 ㅠㅠ
헤더 방지에 의해서 중복해서 하더라도 에러가 발생하지 않아야 되는거 같은데 왜 이런 문제가 발생할까요

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.05.28

header.h에서 선언한 변수가

컴파일되는 당시에 두 cpp 파일에서 중복 선언되어 그렇습니다.

 

header 에서 선언/초기화된 변수가 어떤 파일에서 중복선언되는지 확인해보세요.

 

가장 간단한 해결방법은 static을 붙이는 것입니다.

 

// header.h

#pragma once

namespace he {
	static float pi = 3.14f;
}

 

// source1.cpp

#include <iostream>
#include "header.h"

// extern int x = 123;

void Something() {
	using namespace std;

	cout << he::pi << endl;
}

 

// source2.cpp

#include <iostream>
#include "header.h"

// extern int x;

int main()
{
	using namespace std;
	cout << he::pi << endl;
}

 

(참고)

https://itchipmunk.tistory.com/38

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=microcdw&logNo=90139551469

http://egloos.zum.com/etstnt/v/5098661