我在程序中写了以下代码://define.h
DBS_STRTSDM *Arr_DBS_STRTSDM;DBS_STR_ID_NAME *Arr_Tradio_ID_NAME;
然后在程序中使用如下:
1.cpp
include "define.h"
...
..
Arr_DBS_STRTSDM=new DBS_STRTSDM[nRows];//指针指向,nRows为数组大小2.cpp
include "define.h"
...
..
Arr_Tradio_ID_NAME=new DBS_STR_ID_NAME[nRows];//指针指向,nRows为数组大小编译不通过:(1.obj : error LNK2005: .....)
struct DBS_STR_ID_NAME *  Arr_Tradio_ID_NAME" (?Arr_Tradio_ID_NAME@@3PAUDBS_STR_ID_NAME@@A) already defined in 2.objMainFrm.obj : error LNK2005: "struct DBS_STRTSDM *  Arr_DBS_STRTSDM" (?Arr_DBS_STRTSDM@@3PAUDBS_STRTSDM@@A) already defined 2.obj在声明中好像有重定义的行为,但是我搞不清楚错在那里,应该如何改正,
请诸位指教!!
多谢

解决方案 »

  1.   

    本来就是重复定义了。
    在头文件中定义变量,所以所有的cpp都有这些变量。
    头文件中应该是声明,在cpp中定义。
    比如
    .h
    extern DBS_STRTSDM *Arr_DBS_STRTSDM;
    extern DBS_STR_ID_NAME *Arr_Tradio_ID_NAME;
    在1.cpp中
    DBS_STRTSDM *Arr_DBS_STRTSDM;
    DBS_STR_ID_NAME *Arr_Tradio_ID_NAME;
      

  2.   

    要么如楼上说的要么在1.cpp中定义在2.cpp中extern ....  然后就可以用了。 这样就不用在.h中声明了
      

  3.   

    thanks alot !!!finish it!
      

  4.   

    在1.cpp中DBS_STRTSDM *Arr_DBS_STRTSDM;
    DBS_STR_ID_NAME *Arr_Tradio_ID_NAME;使用时:
    Arr_DBS_STRTSDM=new DBS_STRTSDM[nRows];//指针指向,nRows为数组大小;
    Arr_Tradio_ID_NAME=new DBS_STR_ID_NAME[nRows];//指针指向,nRows为数组大小.h
    extern DBS_STRTSDM *Arr_DBS_STRTSDM;
    extern DBS_STR_ID_NAME *Arr_Tradio_ID_NAME;