stdafx.h 包含了
#include "Global.h"
#include "externs.h"Global.h :
#pragma onceLPWSTR pSysDir = NULL;
LPWSTR pAppDir = NULL;
externs.h:
#pragma onceextern LPWSTR pSysDir;
extern LPWSTR pAppDir;连接的时候就出现了:
inject.obj : error LNK2005: "unsigned short * pSysDir" (?pSysDir@@3PAGA) 已经在 stdafx.obj 中定义
inject.obj : error LNK2005: "unsigned short * pAppDir" (?pAppDir@@3PAGA) 已经在 stdafx.obj 中定义
#include "Global.h"
#include "externs.h"Global.h :
#pragma onceLPWSTR pSysDir = NULL;
LPWSTR pAppDir = NULL;
externs.h:
#pragma onceextern LPWSTR pSysDir;
extern LPWSTR pAppDir;连接的时候就出现了:
inject.obj : error LNK2005: "unsigned short * pSysDir" (?pSysDir@@3PAGA) 已经在 stdafx.obj 中定义
inject.obj : error LNK2005: "unsigned short * pAppDir" (?pAppDir@@3PAGA) 已经在 stdafx.obj 中定义
#include "externs.h"这两句从stdafx中移开,需要的地方加人
extern LPWSTR pAppDir;
一般是放到CPP或者C文件中的如果你就是要这样用,那得看看包含了Global.h头文件的地方也包含了externs.h,或者出现这两个包含的时候顺序是否是错了
LPWSTR pAppDir = NULL;
这放到工程的其中一个CPP或者C文件中才对stdafx.h 包含了 #include "Global.h",而在多个CPP或者C文件中#include "stdafx.h",当然重定义了
stdafx.h 包含了
#include "Global.h"
#include "externs.h"因为所有的cpp都有包含stdafx.h 所以没有必有每个cpp都包含 global.h 和 externs.h 吧
另外我也加了 pragma once
extern LPWSTR pSysDir;
extern LPWSTR pAppDir;
extern LPWSTR pSysDir;extern LPWSTR pAppDir; 可以放到头文件
LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件
#pragma once 只是避免在同一个CPP或者C文件中多次#include同一个头文件,不是说在一个CPP或者C文件中#include了,再在其它CPP或者C文件中#include就不起作用,因为每个CPP或者C文件都是单独编译的。加了extern的是声明,不是定义;同一个变量声明可以多次,定义只能一次
extern LPWSTR pSysDir;extern LPWSTR pAppDir; 可以放到头文件
LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件
谢谢你。
再问多一个问题就结贴。
LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件,就是说放CPP里面
如果别的CPP要用这个变量的话,应该怎么做呢?
使用 extern 就可以了吗?
#pragma once 只是避免在同一个CPP或者C文件中多次#include同一个头文件,不是说在一个CPP或者C文件中#include了,再在其它CPP或者C文件中#include就不起作用,因为每个CPP或者C文件都是单独编译的。加了extern的是声明,不是定义;同一个变量声明可以多次,定义只能一次
extern LPWSTR pSysDir;extern LPWSTR pAppDir; 可以放到头文件
LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件
谢谢你。
再问多一个问题就结贴。
LPWSTR pSysDir = NULL; LPWSTR pAppDir = NULL;不要放到头文件,就是说放CPP里面
如果别的CPP要用这个变量的话,应该怎么做呢?
使用 extern 就可以了吗?是的,全局变量使用 extern 声明就可以了