我在 Visual Studio 2010 中编译旧的 C++ Visual Studio 5 项目时遇到一个奇怪的问题。有一个烦人的编译器错误我无法摆脱,它似乎与枚举“DBTYPE”有关。下面给出了 .h 文件的片段和一些额外的行,以防错误来自上面:
struct CBrowseField;
class CODBCBrowseDlg;
typedef CArray <CBrowseField*, CBrowseField*&> FLDNAMES;
typedef CArray <CString, LPCTSTR > COLNAMES;
enum DBTYPE
{ //this bracket is where all 7 errors point to.
DB_FOXPRO26,
DB_OTHERS
};
我在编译时遇到了 7 个错误,它们都在说同样的事情,并且都指向相同的行号。错误如下:
错误 71 错误 C2371:“DBTYPE”:重新定义;不同的基本类型 d:\temp\npc\print manager - 1\core\blib\odbcbrowsegrid.h 29 1 npcnt
那么这里到底发生了什么。我检查并重新检查了语法。我觉得不错。我已经对整个目录进行了单词搜索,以查看是否有另一个 DBTYPE 实例,但没有。我错过了什么?如果它真的被重新定义了,为什么它不告诉我其他定义在哪里?
最佳答案
看起来你可能间接地包含了 odbcbrowsegrid.h 文件,它恰好包含同名的东西,我敢打赌在第 29 行。
所以你只需要以不同的方式调用你的枚举。
AFTERTHOUGHT:除非...您的文件实际上是 odbcbrowsegrid.h
。那我就废话了。
关于c++ - 尝试在 C++ Visual Studio 2010 中声明枚举时出现奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7182277/