在.h文件中,我声明了一个全局变量为:多,包括.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")
但是如果我包括多个cpp文件这个文件,当我尝试编译,我得到“错误LNK2005:“int VARX”(?VARX @@ 3HA)已在Dll.obj中定义“错误。如果我只包含一个cpp文件,则不会遇到任何问题。
是不是#IFNDEF ....检查足以防止这种情况?我想念什么?
这是不够的,以防止这种情况。当你包括一些东西的时候,就像将该文件的全部内容复制到你的文件中一样。当你将它复制到每个cpp文件中时,你都告诉它们每个都包含“int VARX = 0;”因为DEF_VARX不会在每个文件中首次定义。所以他们每个人都会包含一个VARX的定义。 #ifndefs防止int VARX;从同一个文件中被定义两次。 – pbos 2009-11-02 20:49:48