全局变量在多文件中声明的一种可能的方法是
在.h文件中声明
#ifdef GLOBALS
bool m_debug = false;
int m_selectedPerson = -1;
int m_numPersons = 0;
int m_gui_faces_left = -1;
int m_gui_faces_top = -1;
std::vector<int> m_latestFaces ;
// Position of GUI buttons:
cv::Rect m_rcBtnAdd;
cv::Rect m_rcBtnDel;
cv::Rect m_rcBtnDebug;
#else
extern bool m_debug;
extern int m_selectedPerson;
extern int m_numPersons;
extern int m_gui_faces_left;
extern int m_gui_faces_top;
extern std::vector<int> m_latestFaces ;
// Position of GUI buttons:
extern cv::Rect m_rcBtnAdd;
extern cv::Rect m_rcBtnDel;
extern cv::Rect m_rcBtnDebug;
extern enum MODES{MODE_STARTUP, MODE_DETECTION, MODE_COLLECT_FACES, MODE_TRAINING, MODE_RECOGNITION, MODE_DELETE_ALL,MODE_END};
extern MODES m_mode;
#endif
然后在某一个.c文件中添加
#define GLOBALS 语句
而全局常量的定义关于c++ const常量在.h文件中定义的问题这里面说的非常好
我采取的方法是第一种 vs2010 的编译器是要加static才能成功编译的
关于第二种方法
如果我才用将定义写入main.cpp中,在main.h中添加外部声明则是可以的,但是如果我将外部声明写入#else里面
则会报出找不到定义的错误
具体为什么是这样我还不知道,我认为可能跟编译器有关