有一些全局变量,我统一放在了以个头文件中,但是编译的时候,其他的入enum之类,都没有问题,但是其中的一个数组,老说我重复定义,怎么回事呢?
代码结构如下://定义的全局变量,GlobalFile.h
#ifndef GLOBALFILE_H
#define GLOBALFILE_H
enum eListFlag
{
list_none = -1,
list_name = 100,
list_mobile,
list_corp,
list_sex,
list_invalid,
list_effect,
list_phonext,
list_level,
list_record
};//就是这个说我重复定义
eListFlag gColumnList[9] = {
list_none,
list_none,
list_none,
list_none,
list_none,
list_none,
list_none,
list_none,
list_none
};
#endif//引用1,DataCheck.h
#ifndef GLOBALFILE_H
#incluce "GlobalFile.h"
#endif
//.....其他代码
//引用2,ViewSetting.h
#ifndef GLOBALFILE_H
#incluce "GlobalFile.h"
#endif
//.....其他代码
结果就是,说我那个数组重复定义,如果我把数组定义给去掉,就好了,这是为什么呢?
代码结构如下://定义的全局变量,GlobalFile.h
#ifndef GLOBALFILE_H
#define GLOBALFILE_H
enum eListFlag
{
list_none = -1,
list_name = 100,
list_mobile,
list_corp,
list_sex,
list_invalid,
list_effect,
list_phonext,
list_level,
list_record
};//就是这个说我重复定义
eListFlag gColumnList[9] = {
list_none,
list_none,
list_none,
list_none,
list_none,
list_none,
list_none,
list_none,
list_none
};
#endif//引用1,DataCheck.h
#ifndef GLOBALFILE_H
#incluce "GlobalFile.h"
#endif
//.....其他代码
//引用2,ViewSetting.h
#ifndef GLOBALFILE_H
#incluce "GlobalFile.h"
#endif
//.....其他代码
结果就是,说我那个数组重复定义,如果我把数组定义给去掉,就好了,这是为什么呢?
#ifndef GLOBALFILE_H
#incluce "GlobalFile.h"
#endif
//.....其他代码
//引用2,ViewSetting.h
#ifndef GLOBALFILE_H
#incluce "GlobalFile.h"
#endif
//.....其他代码
怎么发现是incluce而不是include啊???
#ifndef GLOBALFILE_H
#include "GlobalFile.h"
#endif
//.....其他代码
//引用2,ViewSetting.h
#ifndef GLOBALFILE_H
#include "GlobalFile.h"
#endif
//.....其他代码
那应该是编译器编译的时候,由于单个文件中#ifndef GLOBALFILE_H都没有定义,所以#include "GlobalFile.h"被包含了两次,最终导致了eListFlag gColumnList[9] 被重复定义了一次出错~~~
还有个疑问,如果是那样,那那些enum应该也算是重复定义啊??
有没有办法产看宏有没有定义的?
可以直接右键,go to defination~~~
#ifndef GLOBALFILE_H
#define GLOBALFILE_H
#pragma once
enum eListFlag
{
list_none = -1,
list_name = 100,
list_mobile,
list_corp,
list_sex,
list_invalid,
list_effect,
list_phonext,
list_level,
list_record
};extern int gColumnList[9] = {0};
谢谢几位,现在我改成这样子了,可是还是同样的错误啊?
我也想baidu,不过部知道用什么关键字找好,没找到什么有用的信息