-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
헤더 파일 충돌문제
22.05.27 14:53 작성 조회수 475
0
test.cpp파일과 mainChapter1_24.cpp파일에 각각 header.h를 include 하니까 문제가 발생하네요 하나씩만 include 하면 문제가 안생기는데 ㅠㅠ
헤더 방지에 의해서 중복해서 하더라도 에러가 발생하지 않아야 되는거 같은데 왜 이런 문제가 발생할까요
답변을 작성해보세요.
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
답변 1