강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

SH님의 프로필 이미지
SH

작성한 질문수

홍정모의 따라하며 배우는 C++

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

헤더 파일 충돌문제

작성

·

788

0

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

답변 1

0

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

SH님의 프로필 이미지
SH

작성한 질문수

질문하기