我在一个单文档结构的程序中加了一个头文件xinde.h,用来装一些自己定义的结构体变量和函数。
然后再后面的几个cpp文件中都要用到其中的函数。所以就在cpp文件开头加上#include"xinde.h"
编译后出现错误说:自定义的那些函数有重复定义。
然后我又在xinde.h文件开头加了#ifndef __XINDE_H
#define __XINDE_H这样的定义,
然后出现新的错误:CYuan.obj : error LNK2005: "void __cdecl change(class CDib *,class CPoint,struct YANSE)" (?change@@YAXPAVCDib@@VCPoint@@UYANSE@@@Z) already defined in CHuabi.obj
StdAfx.obj : error LNK2005: "void __cdecl change(class CDib *,class CPoint,struct YANSE)" (?change@@YAXPAVCDib@@VCPoint@@UYANSE@@@Z) already defined in CHuabi.obj
请问这样的问题应该怎样解决阿?

解决方案 »

  1.   

    那么如果要在另外一个cpp文件里用到这个变量或者函数,应该怎么办呢?
      

  2.   

    另外一个cpp文件里用到这个变量或者函数只要是全局的,应该都没有问题的
      

  3.   

    a.h
    extern void __cdecl change(class CDib *,class CPoint,struct YANSE);
    a.cpp
    void __cdecl change(class CDib *,class CPoint,struct YANSE)
    {
    //...
    }其他用到的地方#include "a.h"
      

  4.   

    xing_xing_xing(ζ未名ζ) 正解,如果只是函数,不是全局变量也可以加上static既可:
    static void change(class CDib *,class CPoint,struct YANSE);
      

  5.   

    xing_xing_xing(ζ未名ζ)的方法比较好。
    如果你不想这么干,把你想申明的结构体或变量在你要用的地方做extern申明也行