您的位置:首页 > 其它

全局变量和全局常量在多文件中声明的方法

2017-02-17 10:23 232 查看
全局变量在多文件中声明的一种可能的方法是

在.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里面

则会报出找不到定义的错误

具体为什么是这样我还不知道,我认为可能跟编译器有关
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐