토글메뉴(강사도 삽질) 10:30 질문 / pch.h 전역변수 선언 에러
안녕하세요. 강사님.
pch.h
BOOL g_bOption01;
pch.cpp
g_bOption01 = TRUE;
강의(토글메뉴(강사도 삽질) 10:30)와 같이 위와 같이 작성되었을 때, 왜 에러가 발생하는 지 궁금합니다. 어떤 문법에 걸리는 지 궁금합니다.
좋은 강의 제공해주셔서 감사합니다.
回答 2
1
안녕하세요, 인프런 AI 인턴입니다.
최정겸님의 질문에 대한 답변을 드리겠습니다. 전역 변수 선언과 관련된 에러는 보통 선언과 정의가 올바르지 않을 때 발생할 수 있습니다. 전역 변수를 사용할 때는 선언과 정의가 구분되어야 하며, 사용되는 위치도 명확해야 합니다.
전역 변수 g_bOption01를 사용하는 방법에 대해 간단히 설명드리겠습니다.
선언과 정의의 차이:
- 선언(declaration): 변수의 선언은 해당 변수의 존재를 컴파일러에 알리는 과정으로 일반적으로 extern 키워드를 사용합니다. 예를 들어:
// pch.h 파일 extern BOOL g_bOption01;
- 정의(definition): 변수의 정의는 메모리 공간을 할당하는 것이며, 이 시점에서 초기화를 수행할 수 있습니다. 예를 들어:
// pch.cpp 파일 BOOL g_bOption01 = TRUE;
- 선언(declaration): 변수의 선언은 해당 변수의 존재를 컴파일러에 알리는 과정으로 일반적으로 extern 키워드를 사용합니다. 예를 들어:
에러의 원인:
- 에러가 발생하는 주요 원인은 전역 변수를 여러 파일에서 사용하려고 할 때 정의와 선언을 혼동할 때 발생합니다.
pch.h파일에 전역 변수를extern키워드로 선언하고,pch.cpp등 특정 소스 파일에서 변수를 정의해주세요.
- 에러가 발생하는 주요 원인은 전역 변수를 여러 파일에서 사용하려고 할 때 정의와 선언을 혼동할 때 발생합니다.
이러한 구조를 취함으로써 전역 변수가 여러 파일에서 참조될 수 있도록 할 수 있습니다. 전역 변수를 제대로 선언하고 정의하는 방식에 대해서 추가적인 도움이 필요하시면, 다음의 링크도 참고하시면 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Reticle이 안나옵니다.
0
6
1
진행 방법 질문드립니다!
0
26
2
Singleton 관련 질문입니다.
1
27
2
2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.
0
54
2
AddGameFrameworkComponentReceiver vs AddExtensionHandler
0
23
0
scanf("%d\n") 의미
0
20
1
2주차 개념#12 트리 순회
0
25
2
책과 강의 질문
0
156
2
MFC로 게임 엔진 제작 질문
0
175
2
이벤트 메시지 루프의 '응답 없음'에 대하여
0
136
2
그려진 도형 선택(Z-order 변경)부분[9분59초경]
0
92
2
메모리 창을 어떡해 뛰우나요?
0
164
3
안녕하세요 선생님
0
114
1
CMainFrame과 CCreateDemoView와의 관계 (교과서 p80 그림3-3)
1
109
1
메시지 루프에서 메시지 처리 성능 비교: WinAPI vs MFC
0
273
3
커스텀 드로우에 대해서도 다루나요?
0
187
2
MainFrame 에서 LButtonDown 이벤트 처리 질문
0
166
1
윈도우 프로그래밍 UI 관련 질문입니다
0
230
2
유튜브 강의와 차이점
0
316
1
책 질문입니다.
0
283
2
mfc 내부에서 콜백 함수 구현 방법
0
391
1
수강기간 무제한인지 문의드립니다!
1
453
1
pOldPen = dc.SelectObject(); 관련 질문
0
267
1
라디오 버튼 그룹에 대해서 질문합니다.
0
302
1

