我自己定一个.h头文件,里面定义一个CString name;其它.cpp文件中怎么使用这个全局变量呢?如果我有两个.cpp文件要用到这个name,我把.h文件inculde到.cpp文件中,就会出现重定义错误,如果不#include的话,就出现未定义错误!真是无限郁闷啊?

解决方案 »

  1.   

    #if !define yourheader.h
    #define yourheader.h
    #endif
      

  2.   

    在头文件中作如下定义:
    #ifndef YOURHEADFILE_H
    #define YOURHEADFILE_H//此处加入文件内容#ENDIF /* !YOURHEADFILE_H*/
      

  3.   

    上面书写有误,在头文件中作如下定义:
    #ifndef YOURHEADFILE_H
    #define YOURHEADFILE_H//此处加入文件内容#endif /* !YOURHEADFILE_H */
      

  4.   

    在头文件顶部加
    #pragma once
      

  5.   

    #pragma once
    #ifndef AAAAA//AAAAA任意
    #define AAAAA
    CString totalquerystr;
    #endif
    我这样定义了totalquerystr;但还是link的时候有错啊。郁闷致死了要!!
    Compiling...
    Querydlg.cpp
    Linking...
    CsisView.obj : error LNK2005: "class CString  totalquerystr" (?totalquerystr@@3VCString@@A) already defined in Csis.obj
    Display.obj : error LNK2005: "class CString  totalquerystr" (?totalquerystr@@3VCString@@A) already defined in Csis.obj
    Querydlg.obj : error LNK2005: "class CString  totalquerystr" (?totalquerystr@@3VCString@@A) already defined in Csis.obj
    Debug/Csis.exe : fatal error LNK1169: one or more multiply defined symbols found
    Error executing link.exe.Csis.exe - 4 error(s), 0 warning(s)
      

  6.   

    实例变量的定义应放在cpp文件中,而不是头文件中,在引用的地方用 extern CString name。
      

  7.   

    northboy911你的问题解决了吗?用上面的方法调试通过了吗?
    我现在也遇到了同样的问题,但是使用上面的方法,还是没有通过
    我急死了!!
      

  8.   

    我使用了上面的方法,怎么没通过,northboy911你运行通过了么?