--------------------Configuration: RealAlarm_RCMS_WndCtrl - Win32 Debug--------------------
Compiling...
FuncApi.cpp
c:\program files\vc98\include\dbdaoint.h(33) : error C2011: 'EditModeEnum' : 'enum' type redefinition
c:\program files\vc98\include\dbdaoint.h(57) : error C2011: 'LockTypeEnum' : 'enum' type redefinition
c:\program files\vc98\include\dbdaoint.h(73) : error C2011: 'FieldAttributeEnum' : 'enum' type redefinition
c:\program files\vc98\include\dbdaoint.h(83) : error C2011: 'DataTypeEnum' : 'enum' type redefinition
c:\program files\vc98\include\dbdaoint.h(255) : error C2011: 'ParameterDirectionEnum' : 'enum' type redefinition
c:\program files\vc98\include\dbdaoint.h(268) : error C2011: 'RecordStatusEnum' : 'enum' type redefinition
Error executing cl.exe.RealAlarm_RCMS_WndCtrl.dll - 6 error(s), 0 warning(s)给位兄弟姐妹,我在添加了某个文件到VC6工程之后,编译时提示上述错误。这些结构如下:typedef enum EditModeEnum {
    dbEditNone = 0,
    dbEditInProgress = 1,
    dbEditAdd = 2,
    dbEditChanged = 4,
    dbEditDeleted = 8,
    dbEditNew = 16
} EditModeEnum;typedef enum LockTypeEnum {
    dbPessimistic = 2,
    dbOptimistic = 3,
    dbOptimisticValue = 1,
    dbOptimisticBatch = 5
} LockTypeEnum;typedef enum FieldAttributeEnum {
    dbFixedField = 1,
    dbVariableField = 2,
    dbAutoIncrField = 16,
    dbUpdatableField = 32,
    dbSystemField = 8192,
    dbHyperlinkField = 32768,
    dbDescending = 1
} FieldAttributeEnum;typedef enum DataTypeEnum {
    dbBoolean = 1,
    dbByte = 2,
    dbInteger = 3,
    dbLong = 4,
    dbCurrency = 5,
    dbSingle = 6,
    dbDouble = 7,
    dbDate = 8,
    dbBinary = 9,
    dbText = 10,
    dbLongBinary = 11,
    dbMemo = 12,
    dbGUID = 15,
    dbBigInt = 16,
    dbVarBinary = 17,
    dbChar = 18,
    dbNumeric = 19,
    dbDecimal = 20,
    dbFloat = 21,
    dbTime = 22,
    dbTimeStamp = 23
} DataTypeEnum;typedef enum ParameterDirectionEnum {
    dbParamInput = 1,
    dbParamOutput = 2,
    dbParamInputOutput = 3,
    dbParamReturnValue = 4
} ParameterDirectionEnum;typedef enum RecordStatusEnum {
    dbRecordUnmodified = 0,
    dbRecordModified = 1,
    dbRecordNew = 2,
    dbRecordDeleted = 3,
    dbRecordDBDeleted = 4
} RecordStatusEnum;我以前遇到这种问题,就把Stdafx.h中的下面代码掉,就能解决这个问题。#ifndef _AFX_NO_DB_SUPPORT
#include <afxdb.h> // MFC ODBC database classes
#endif // _AFX_NO_DB_SUPPORT#ifndef _AFX_NO_DAO_SUPPORT
#include <afxdao.h> // MFC DAO database classes
#endif // _AFX_NO_DAO_SUPPORT但是我添加进来的是别人的文件,我不能随便把上述语句掉。
请问各位兄弟姐妹有没有解决的办法?

解决方案 »

  1.   

    imprt tlb时,改变数据库的namespace
      

  2.   

    #ifdef ENUM
    #else
    #define ENUM
    typedef enum EditModeEnum { 
        dbEditNone = 0, 
        dbEditInProgress = 1, 
        dbEditAdd = 2, 
        dbEditChanged = 4, 
        dbEditDeleted = 8, 
        dbEditNew = 16 
    } EditModeEnum; typedef enum LockTypeEnum { 
        dbPessimistic = 2, 
        dbOptimistic = 3, 
        dbOptimisticValue = 1, 
        dbOptimisticBatch = 5 
    } LockTypeEnum; typedef enum FieldAttributeEnum { 
        dbFixedField = 1, 
        dbVariableField = 2, 
        dbAutoIncrField = 16, 
        dbUpdatableField = 32, 
        dbSystemField = 8192, 
        dbHyperlinkField = 32768, 
        dbDescending = 1 
    } FieldAttributeEnum; typedef enum DataTypeEnum { 
        dbBoolean = 1, 
        dbByte = 2, 
        dbInteger = 3, 
        dbLong = 4, 
        dbCurrency = 5, 
        dbSingle = 6, 
        dbDouble = 7, 
        dbDate = 8, 
        dbBinary = 9, 
        dbText = 10, 
        dbLongBinary = 11, 
        dbMemo = 12, 
        dbGUID = 15, 
        dbBigInt = 16, 
        dbVarBinary = 17, 
        dbChar = 18, 
        dbNumeric = 19, 
        dbDecimal = 20, 
        dbFloat = 21, 
        dbTime = 22, 
        dbTimeStamp = 23 
    } DataTypeEnum; typedef enum ParameterDirectionEnum { 
        dbParamInput = 1, 
        dbParamOutput = 2, 
        dbParamInputOutput = 3, 
        dbParamReturnValue = 4 
    } ParameterDirectionEnum; typedef enum RecordStatusEnum { 
        dbRecordUnmodified = 0, 
        dbRecordModified = 1, 
        dbRecordNew = 2, 
        dbRecordDeleted = 3, 
        dbRecordDBDeleted = 4 
    } RecordStatusEnum; 
    #endif
      

  3.   

    这样就好了,结构体声明 如果 是 在  头文件中 ,就要尽量避免这个头文件的重复 引入,
    否则需要利用#ifdef 。。 #else 。。 #define #endif  了
      

  4.   

    #import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")请问五岭散人,我import的是上述的ado,我import的时候,都是使用no_namespace的。
    如果要改变namespace,应该改成什么样子?