, 내가 같은 전역 변수 선언 오전 .H 파일 : 나는 컴파일 할 때, 나는 "얻을 내가 여러 CPP 파일에서이 파일을 포함하는 경우에는멀티를 포함한 .H 파일에서
#pragma data_seg(".shared")
#ifndef DEF_VARX
#define DEF_VARX
int VARX=0;
#endif /*DEF_VARX*/
#pragma data_seg()
#pragma comment(linker, "/SECTION:.shared,RWS")
을 오류 LNK2005 : "int VARX"(? VARX @@ 3HA) Dll.obj에 이미 정의 됨 "오류가 발생했습니다. 하나의 cpp 파일에만 포함 시키면. 제 점이 _ 생하지 않습니다.
아니요 #IFNDEF ....이 문제를 방지하기에 충분합니까? 내가 뭔가를 놓치고 있니?
// in a header file
#pragma once
extern int VARX;
// in a .cpp
#pragma data_seg(".shared")
int VARX=0;
#pragma data_seg()
#pragma comment(linker, "/SECTION:.shared,RWS")
이 문제를 방지하기에는 충분하지 않습니다. #include를 사용하면 파일의 전체 내용을 자신의 것으로 복사하는 것과 같습니다.이것을 각각의 cpp 파일에 복사하면 각각에 "int VARX = 0;"을 포함하도록 알려줍니다. 왜냐하면 DEF_VARX는 각 파일에서 처음으로 정의되지 않기 때문입니다. 그래서 각각은 VARX의 정의를 포함 할 것입니다. #ifndefs가 int VARX를 방지합니다. 동일한 파일에서 두 번 정의되는 것을 막을 수 있습니다. – pbos